use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / parser._sep.c
diff --git a/c_src/parser._sep.c b/c_src/parser._sep.c
deleted file mode 100644 (file)
index aeee6ea..0000000
+++ /dev/null
@@ -1,60533 +0,0 @@
-/* This C file is generated by NIT to compile module parser. */
-#include "parser._sep.h"
-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:246 */
-  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:247 */
-  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:241 */
-    REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB4));
-    /* parser/parser.nit:50 */
-    if (UNTAG_Bool(REGB3)) {
-      /* ../lib/standard/kernel.nit:245 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-      /* parser/parser.nit:51 */
-      REGB5 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:249 */
-      REGB5 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB5));
-      /* parser/parser.nit:52 */
-      REGB3 = TAG_Int(2);
-      /* ../lib/standard/kernel.nit:248 */
-      REGB3 = TAG_Int(UNTAG_Int(REGB5)*UNTAG_Int(REGB3));
-      /* parser/parser.nit:52 */
-      REGB6 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      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);
-      }
-      /* ../lib/standard/kernel.nit:242 */
-      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:247 */
-        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:244 */
-        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:245 */
-          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:245 */
-          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;
-        }
-      }
-    } 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:245 */
-  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:242 */
-  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:281 */
-    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:243 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:281 */
-    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, 281);
-      }
-      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:242 */
-      REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    } else {
-      /* ../lib/standard/collection/array.nit:281 */
-      REGB3 = TAG_Bool(0);
-      REGB1 = REGB3;
-    }
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-    }
-    /* ../lib/standard/collection/array.nit:282 */
-    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, 282);
-    }
-    /* ../lib/standard/collection/array.nit:725 */
-    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-    /* ../lib/standard/collection/array.nit:282 */
-    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:281 */
-  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:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:281 */
-  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, 281);
-    }
-    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:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  } else {
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB2 = TAG_Bool(0);
-    REGB1 = REGB2;
-  }
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-  }
-  /* ../lib/standard/collection/array.nit:282 */
-  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, 282);
-  }
-  /* ../lib/standard/collection/array.nit:725 */
-  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:282 */
-  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:281 */
-  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:243 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ../lib/standard/collection/array.nit:281 */
-  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, 281);
-    }
-    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:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  } else {
-    /* ../lib/standard/collection/array.nit:281 */
-    REGB2 = TAG_Bool(0);
-    REGB1 = REGB2;
-  }
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-  }
-  /* ../lib/standard/collection/array.nit:282 */
-  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, 282);
-  }
-  /* ../lib/standard/collection/array.nit:725 */
-  fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ../lib/standard/collection/array.nit:282 */
-  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:247 */
-  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:247 */
-    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:241 */
-      REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB6));
-      /* parser/parser.nit:115 */
-      if (UNTAG_Bool(REGB5)) {
-        /* ../lib/standard/kernel.nit:245 */
-        REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
-        /* parser/parser.nit:116 */
-        REGB7 = TAG_Int(2);
-        /* ../lib/standard/kernel.nit:249 */
-        REGB7 = TAG_Int(UNTAG_Int(REGB5)/UNTAG_Int(REGB7));
-        /* parser/parser.nit:117 */
-        REGB5 = TAG_Int(3);
-        /* ../lib/standard/kernel.nit:248 */
-        REGB5 = TAG_Int(UNTAG_Int(REGB7)*UNTAG_Int(REGB5));
-        /* parser/parser.nit:117 */
-        REGB8 = TAG_Int(1);
-        /* ../lib/standard/kernel.nit:245 */
-        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:242 */
-        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:247 */
-          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:244 */
-          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:245 */
-            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:245 */
-            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:245 */
-            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;
-      }
-    }
-    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:237 */
-      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:237 */
-        REGB4 = TAG_Bool((REGB2)==(REGB4));
-        /* parser/parser.nit:133 */
-        REGB0 = REGB4;
-      }
-      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:281 */
-        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);
-        }
-        /* ../lib/standard/kernel.nit:243 */
-        REGB0 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB0));
-        /* ../lib/standard/collection/array.nit:281 */
-        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, 281);
-          }
-          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:242 */
-          REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-        } else {
-          /* ../lib/standard/collection/array.nit:281 */
-          REGB4 = TAG_Bool(0);
-          REGB0 = REGB4;
-        }
-        if (UNTAG_Bool(REGB0)) {
-        } else {
-          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 281);
-        }
-        /* ../lib/standard/collection/array.nit:282 */
-        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, 282);
-        }
-        /* ../lib/standard/collection/array.nit:725 */
-        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-        /* ../lib/standard/collection/array.nit:282 */
-        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:237 */
-          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_nodes___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:237 */
-            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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(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;
-          }
-        }
-      }
-    }
-  }
-  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_nodes::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(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:1480 */
-    fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
-    /* parser/parser.nit:1481 */
-    ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
-    /* parser/parser.nit:1484 */
-    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, 1484);
-    }
-    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:1485 */
-      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, 1485);
-      }
-      fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:270 */
-      REGB0 = TAG_Int(0);
-      /* ../lib/standard/collection/array.nit:271 */
-      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, 271);
-      }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:272 */
-      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-      /* ../lib/standard/collection/array.nit:273 */
-      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:242 */
-        REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:273 */
-        if (UNTAG_Bool(REGB1)) {
-          /* ../lib/standard/collection/array.nit:274 */
-          REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-          }
-          /* ../lib/standard/collection/array.nit:725 */
-          fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-          /* parser/parser.nit:1486 */
-          ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
-          /* ../lib/standard/collection/array.nit:275 */
-          REGB1 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:245 */
-          REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ../lib/standard/collection/array.nit:275 */
-          REGB0 = REGB1;
-        } else {
-          /* ../lib/standard/collection/array.nit:273 */
-          goto label1;
-        }
-      }
-      label1: while(0);
-      /* parser/parser.nit:1488 */
-      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, 1488);
-      }
-      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:1492 */
-    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, 1492);
-    }
-    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:1493 */
-      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, 1493);
-      }
-      fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-      /* ../lib/standard/collection/array.nit:270 */
-      REGB0 = TAG_Int(0);
-      /* ../lib/standard/collection/array.nit:271 */
-      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, 271);
-      }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:272 */
-      fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-      /* ../lib/standard/collection/array.nit:273 */
-      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:242 */
-        REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ../lib/standard/collection/array.nit:273 */
-        if (UNTAG_Bool(REGB1)) {
-          /* ../lib/standard/collection/array.nit:274 */
-          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-          }
-          /* ../lib/standard/collection/array.nit:725 */
-          fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-          /* parser/parser.nit:1496 */
-          fra.me.REG[6] = fra.me.REG[2];
-          /* parser/parser.nit:1497 */
-          fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
-          /* parser/parser.nit:1498 */
-          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, 1498);
-          }
-          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, 1498);
-          }
-          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:275 */
-          REGB4 = TAG_Int(1);
-          /* ../lib/standard/kernel.nit:245 */
-          REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-          /* ../lib/standard/collection/array.nit:275 */
-          REGB0 = REGB4;
-        } else {
-          /* ../lib/standard/collection/array.nit:273 */
-          goto label2;
-        }
-      }
-      label2: while(0);
-      /* parser/parser.nit:1500 */
-      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, 1500);
-      }
-      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:1503 */
-    REGB0 = TAG_Bool(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, 1503);
-    }
-    /* parser/parser.nit:1504 */
-    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, 1504);
-    }
-    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:1506 */
-    fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
-    /* parser/parser.nit:1507 */
-    ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
-    /* parser/parser.nit:1508 */
-    CALL_parser___parser_nodes___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* parser/parser.nit:1509 */
-    fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
-    /* parser/parser.nit:1510 */
-    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:1512 */
-    ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
-    /* parser/parser.nit:1513 */
-    fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
-    /* parser/parser.nit:1514 */
-    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:1516 */
-      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, 1516);
-      }
-      /* parser/parser.nit:1518 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser, 1518);
-      }
-      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, 1518);
-      }
-      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, 1518);
-      }
-      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, 1518);
-      }
-      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, 1518);
-      }
-      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);
-      CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-      /* parser/parser.nit:1520 */
-      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, 1520);
-      }
-      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:1521 */
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1521);
-        }
-        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, 1521);
-        }
-        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, 1521);
-        }
-        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, 1521);
-        }
-        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, 1521);
-        }
-        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:1522 */
-        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, 1522);
-        }
-        fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:270 */
-        REGB0 = TAG_Int(0);
-        /* ../lib/standard/collection/array.nit:271 */
-        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, 271);
-        }
-        REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ../lib/standard/collection/array.nit:272 */
-        fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-        /* ../lib/standard/collection/array.nit:273 */
-        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:242 */
-          REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
-          /* ../lib/standard/collection/array.nit:273 */
-          if (UNTAG_Bool(REGB4)) {
-            /* ../lib/standard/collection/array.nit:274 */
-            REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
-            if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-            }
-            /* ../lib/standard/collection/array.nit:725 */
-            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB0)];
-            /* parser/parser.nit:1524 */
-            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-            /* ../lib/standard/collection/array.nit:275 */
-            REGB4 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:245 */
-            REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-            /* ../lib/standard/collection/array.nit:275 */
-            REGB0 = REGB4;
-          } else {
-            /* ../lib/standard/collection/array.nit:273 */
-            goto label3;
-          }
-        }
-        label3: while(0);
-        /* parser/parser.nit:1526 */
-        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, 1526);
-        }
-        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:1529 */
-      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, 1529);
-      }
-      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:1530 */
-        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 1530);
-        }
-        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, 1530);
-        }
-        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, 1530);
-        }
-        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, 1530);
-        }
-        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, 1530);
-        }
-        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:1531 */
-        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, 1531);
-        }
-        fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-        /* ../lib/standard/collection/array.nit:270 */
-        REGB2 = TAG_Int(0);
-        /* ../lib/standard/collection/array.nit:271 */
-        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, 271);
-        }
-        REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ../lib/standard/collection/array.nit:272 */
-        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
-        /* ../lib/standard/collection/array.nit:273 */
-        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:242 */
-          REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ../lib/standard/collection/array.nit:273 */
-          if (UNTAG_Bool(REGB3)) {
-            /* ../lib/standard/collection/array.nit:274 */
-            REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-            if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-            }
-            /* ../lib/standard/collection/array.nit:725 */
-            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-            /* parser/parser.nit:1533 */
-            CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-            /* ../lib/standard/collection/array.nit:275 */
-            REGB3 = TAG_Int(1);
-            /* ../lib/standard/kernel.nit:245 */
-            REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-            /* ../lib/standard/collection/array.nit:275 */
-            REGB2 = REGB3;
-          } else {
-            /* ../lib/standard/collection/array.nit:273 */
-            goto label4;
-          }
-        }
-        label4: while(0);
-        /* parser/parser.nit:1535 */
-        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, 1535);
-        }
-        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:1540 */
-      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:1542 */
-        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, 1542);
-        }
-        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:1545 */
-        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, 1545);
-        }
-        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]);
-      }
-    }
-  }
-  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 = 1551;
-  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:1551 */
-  CALL_parser___parser_nodes___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 = 1556;
-  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:1556 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser, 1556);
-  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 = 1557;
-  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:1559 */
-  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:1560 */
-  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* parser/parser.nit:1561 */
-  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 = 1564;
-  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:1564 */
-  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 = 1569;
-  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:1571 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1572 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1573 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1574 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1575 */
-  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:1581 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:1582 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1582);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1587;
-  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:1589 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1590 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1591 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1592 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1593 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1595 */
-  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, 1595);
-  }
-  /* parser/parser.nit:1596 */
-  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:1602 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1603 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1603);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1608;
-  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:1610 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1611 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1612 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1613 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1614 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1616 */
-  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, 1616);
-  }
-  /* parser/parser.nit:1617 */
-  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:1618 */
-  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:1624 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1625 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1625);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1630;
-  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:1632 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1633 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1634 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1635 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1636 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1637 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1639 */
-  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, 1639);
-  }
-  /* parser/parser.nit:1641 */
-  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, 1641);
-  }
-  /* parser/parser.nit:1642 */
-  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:1643 */
-  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:1649 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1650 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1650);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1655;
-  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:1657 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1658 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1659 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1660 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1661 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1663 */
-  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1663);
-  }
-  /* parser/parser.nit:1664 */
-  fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
-  fra.me.REG[5] = fra.me.REG[3];
-  /* parser/parser.nit:1665 */
-  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:1671 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1672 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1672);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1677;
-  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:1679 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1680 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1681 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1682 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1683 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1684 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1686 */
-  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, 1686);
-  }
-  /* parser/parser.nit:1688 */
-  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, 1688);
-  }
-  /* parser/parser.nit:1689 */
-  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:1690 */
-  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:1696 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1697 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1697);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1702;
-  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:1704 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1705 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1706 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1707 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1708 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1709 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1711 */
-  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, 1711);
-  }
-  /* parser/parser.nit:1712 */
-  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:1714 */
-  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, 1714);
-  }
-  /* parser/parser.nit:1715 */
-  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:1716 */
-  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:1722 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1723 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1723);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1728;
-  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:1730 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1731 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1732 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1733 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1734 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1735 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1736 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1738 */
-  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, 1738);
-  }
-  /* parser/parser.nit:1740 */
-  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, 1740);
-  }
-  /* parser/parser.nit:1741 */
-  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:1743 */
-  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, 1743);
-  }
-  /* parser/parser.nit:1744 */
-  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:1745 */
-  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:1751 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1752 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1752);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1757;
-  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:1759 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1760 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1761 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1762 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1763 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1765 */
-  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, 1765);
-  }
-  /* parser/parser.nit:1766 */
-  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:1767 */
-  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:1773 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:1774 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1774);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1779;
-  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:1781 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1782 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1783 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1784 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1785 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1786 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1788 */
-  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, 1788);
-  }
-  /* parser/parser.nit:1790 */
-  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, 1790);
-  }
-  /* parser/parser.nit:1791 */
-  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:1792 */
-  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:1798 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1799 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1799);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1804;
-  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:1806 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1807 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1808 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1809 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1810 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1811 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1813 */
-  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, 1813);
-  }
-  /* parser/parser.nit:1814 */
-  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:1816 */
-  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, 1816);
-  }
-  /* parser/parser.nit:1817 */
-  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:1818 */
-  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:1824 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1825 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1825);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1830;
-  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:1832 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1833 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1834 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1835 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1836 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1837 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1838 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1840 */
-  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, 1840);
-  }
-  /* parser/parser.nit:1842 */
-  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, 1842);
-  }
-  /* parser/parser.nit:1843 */
-  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:1845 */
-  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, 1845);
-  }
-  /* parser/parser.nit:1846 */
-  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:1847 */
-  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:1853 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1854 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1854);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1859;
-  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:1861 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1862 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1863 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1864 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1865 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1866 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1868 */
-  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, 1868);
-  }
-  /* parser/parser.nit:1869 */
-  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:1871 */
-  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, 1871);
-  }
-  /* parser/parser.nit:1872 */
-  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:1873 */
-  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:1879 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:1880 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1880);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1885;
-  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:1887 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1888 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1889 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1890 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1891 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1892 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1893 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1895 */
-  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, 1895);
-  }
-  /* parser/parser.nit:1897 */
-  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, 1897);
-  }
-  /* parser/parser.nit:1898 */
-  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:1900 */
-  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, 1900);
-  }
-  /* parser/parser.nit:1901 */
-  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:1902 */
-  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:1908 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1909 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1909);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1914;
-  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:1916 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1917 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1918 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1919 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1920 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1921 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1922 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1924 */
-  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, 1924);
-  }
-  /* parser/parser.nit:1925 */
-  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:1927 */
-  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, 1927);
-  }
-  /* parser/parser.nit:1928 */
-  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:1930 */
-  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, 1930);
-  }
-  /* parser/parser.nit:1931 */
-  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:1932 */
-  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:1938 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:1939 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1939);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1944;
-  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:1946 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1947 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1948 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1949 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1950 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1951 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1952 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1953 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1955 */
-  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, 1955);
-  }
-  /* parser/parser.nit:1957 */
-  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, 1957);
-  }
-  /* parser/parser.nit:1958 */
-  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:1960 */
-  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, 1960);
-  }
-  /* parser/parser.nit:1961 */
-  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:1963 */
-  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, 1963);
-  }
-  /* parser/parser.nit:1964 */
-  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:1965 */
-  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:1971 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:1972 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1972);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 1977;
-  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:1979 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:1980 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:1981 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1982 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1983 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1984 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:1986 */
-  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, 1986);
-  }
-  /* parser/parser.nit:1987 */
-  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:1988 */
-  fra.me.REG[7] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
-  /* parser/parser.nit:1991 */
-  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:1992 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-  }
-  /* parser/parser.nit:1994 */
-  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:2000 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:2001 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2001);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2006;
-  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:2008 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2009 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2010 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2011 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2012 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2013 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2015 */
-  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, 2015);
-  }
-  /* parser/parser.nit:2016 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2018 */
-  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, 2018);
-  }
-  /* parser/parser.nit:2019 */
-  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:2020 */
-  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* parser/parser.nit:2023 */
-  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:2024 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-  }
-  /* parser/parser.nit:2026 */
-  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:2032 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2033 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2033);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2038;
-  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:2040 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2041 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2042 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2043 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2044 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2045 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2047 */
-  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, 2047);
-  }
-  /* parser/parser.nit:2048 */
-  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:2049 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2051 */
-  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, 2051);
-  }
-  /* parser/parser.nit:2052 */
-  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:2053 */
-  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2056 */
-  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:2057 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:2059 */
-  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:2065 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2066 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2066);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2071;
-  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:2073 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2074 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2075 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2076 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2077 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2078 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2079 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2081 */
-  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, 2081);
-  }
-  /* parser/parser.nit:2083 */
-  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, 2083);
-  }
-  /* parser/parser.nit:2084 */
-  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:2085 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2087 */
-  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, 2087);
-  }
-  /* parser/parser.nit:2088 */
-  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:2089 */
-  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2092 */
-  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:2093 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:2095 */
-  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:2101 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2102 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2102);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2107;
-  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:2109 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2110 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2111 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2112 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2113 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2114 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2116 */
-  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, 2116);
-  }
-  /* parser/parser.nit:2117 */
-  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:2118 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2120 */
-  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, 2120);
-  }
-  /* parser/parser.nit:2121 */
-  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:2122 */
-  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2125 */
-  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:2126 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:2128 */
-  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:2134 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2135 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2135);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2140;
-  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:2142 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2143 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2144 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2145 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2146 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2147 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2148 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2150 */
-  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, 2150);
-  }
-  /* parser/parser.nit:2152 */
-  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, 2152);
-  }
-  /* parser/parser.nit:2153 */
-  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:2154 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2156 */
-  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, 2156);
-  }
-  /* parser/parser.nit:2157 */
-  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:2158 */
-  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2161 */
-  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:2162 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:2164 */
-  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:2170 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2171 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2171);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2176;
-  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:2178 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2179 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2180 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2181 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2182 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2183 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2184 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2186 */
-  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, 2186);
-  }
-  /* parser/parser.nit:2187 */
-  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:2189 */
-  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, 2189);
-  }
-  /* parser/parser.nit:2190 */
-  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:2191 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2193 */
-  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, 2193);
-  }
-  /* parser/parser.nit:2194 */
-  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:2195 */
-  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2198 */
-  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:2199 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:2201 */
-  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:2207 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2208 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2208);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2213;
-  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:2215 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2216 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2217 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2218 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2219 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2220 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2221 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2222 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2224 */
-  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, 2224);
-  }
-  /* parser/parser.nit:2226 */
-  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, 2226);
-  }
-  /* parser/parser.nit:2227 */
-  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:2229 */
-  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, 2229);
-  }
-  /* parser/parser.nit:2230 */
-  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:2231 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2233 */
-  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, 2233);
-  }
-  /* parser/parser.nit:2234 */
-  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:2235 */
-  fra.me.REG[4] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:2238 */
-  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:2239 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:2241 */
-  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:2247 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2248 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2248);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2253;
-  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:2255 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2256 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2257 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2258 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2259 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2260 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2262 */
-  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, 2262);
-  }
-  /* parser/parser.nit:2263 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2265 */
-  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, 2265);
-  }
-  /* parser/parser.nit:2266 */
-  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:2267 */
-  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* parser/parser.nit:2270 */
-  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:2271 */
-  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:2272 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-  }
-  /* parser/parser.nit:2274 */
-  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:2280 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2281 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2281);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2286;
-  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:2288 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2289 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2290 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2291 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2292 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2293 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2294 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2296 */
-  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, 2296);
-  }
-  /* parser/parser.nit:2298 */
-  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, 2298);
-  }
-  /* parser/parser.nit:2299 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2301 */
-  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, 2301);
-  }
-  /* parser/parser.nit:2302 */
-  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:2303 */
-  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* parser/parser.nit:2306 */
-  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:2307 */
-  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:2308 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-  }
-  /* parser/parser.nit:2310 */
-  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:2316 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2317 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2317);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2322;
-  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:2324 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2325 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2326 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2327 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2328 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2329 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2330 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2332 */
-  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, 2332);
-  }
-  /* parser/parser.nit:2333 */
-  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:2335 */
-  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, 2335);
-  }
-  /* parser/parser.nit:2336 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2338 */
-  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, 2338);
-  }
-  /* parser/parser.nit:2339 */
-  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:2340 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2343 */
-  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:2344 */
-  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:2345 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:2347 */
-  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:2353 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2354 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2354);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2359;
-  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:2361 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2362 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2363 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2364 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2365 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2366 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2367 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2368 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2370 */
-  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, 2370);
-  }
-  /* parser/parser.nit:2372 */
-  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, 2372);
-  }
-  /* parser/parser.nit:2373 */
-  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:2375 */
-  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, 2375);
-  }
-  /* parser/parser.nit:2376 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2378 */
-  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, 2378);
-  }
-  /* parser/parser.nit:2379 */
-  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:2380 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2383 */
-  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:2384 */
-  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:2385 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:2387 */
-  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:2393 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2394 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2394);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2399;
-  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:2401 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2402 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2403 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2404 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2405 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2406 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2407 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2409 */
-  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, 2409);
-  }
-  /* parser/parser.nit:2410 */
-  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:2412 */
-  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, 2412);
-  }
-  /* parser/parser.nit:2413 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2415 */
-  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, 2415);
-  }
-  /* parser/parser.nit:2416 */
-  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:2417 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2420 */
-  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:2421 */
-  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:2422 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:2424 */
-  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:2430 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2431 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2431);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2436;
-  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:2438 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2439 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2440 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2441 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2442 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2443 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2444 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2445 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2447 */
-  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, 2447);
-  }
-  /* parser/parser.nit:2449 */
-  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, 2449);
-  }
-  /* parser/parser.nit:2450 */
-  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:2452 */
-  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, 2452);
-  }
-  /* parser/parser.nit:2453 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2455 */
-  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, 2455);
-  }
-  /* parser/parser.nit:2456 */
-  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:2457 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2460 */
-  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:2461 */
-  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:2462 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:2464 */
-  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:2470 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2471 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2471);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2476;
-  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:2478 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2479 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2480 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2481 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2482 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2483 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2484 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2485 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2487 */
-  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, 2487);
-  }
-  /* parser/parser.nit:2488 */
-  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:2490 */
-  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, 2490);
-  }
-  /* parser/parser.nit:2491 */
-  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:2493 */
-  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, 2493);
-  }
-  /* parser/parser.nit:2494 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2496 */
-  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, 2496);
-  }
-  /* parser/parser.nit:2497 */
-  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:2498 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2501 */
-  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:2502 */
-  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:2503 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:2505 */
-  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:2511 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2512 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2512);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2517;
-  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:2519 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2520 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2521 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2522 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2523 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2524 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2525 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2526 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2527 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2529 */
-  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, 2529);
-  }
-  /* parser/parser.nit:2531 */
-  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, 2531);
-  }
-  /* parser/parser.nit:2532 */
-  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:2534 */
-  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, 2534);
-  }
-  /* parser/parser.nit:2535 */
-  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:2537 */
-  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, 2537);
-  }
-  /* parser/parser.nit:2538 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2540 */
-  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, 2540);
-  }
-  /* parser/parser.nit:2541 */
-  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:2542 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:2545 */
-  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:2546 */
-  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:2547 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:2549 */
-  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:2555 */
-  fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:2556 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2556);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2561;
-  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:2563 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2564 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2565 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2566 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2567 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2569 */
-  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, 2569);
-  }
-  /* parser/parser.nit:2570 */
-  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:2571 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2573 */
-  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:2579 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:2580 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2580);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2585;
-  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:2587 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2588 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2589 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2590 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2591 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2592 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2594 */
-  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, 2594);
-  }
-  /* parser/parser.nit:2596 */
-  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, 2596);
-  }
-  /* parser/parser.nit:2597 */
-  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:2598 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2600 */
-  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:2606 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2607 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2607);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2612;
-  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:2614 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2615 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2616 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2617 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2618 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2619 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2621 */
-  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, 2621);
-  }
-  /* parser/parser.nit:2622 */
-  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:2624 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2624);
-  }
-  /* parser/parser.nit:2625 */
-  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:2626 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2628 */
-  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:2634 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2635 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2635);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2640;
-  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:2642 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2643 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2644 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2645 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2646 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2647 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2648 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2650 */
-  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, 2650);
-  }
-  /* parser/parser.nit:2652 */
-  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, 2652);
-  }
-  /* parser/parser.nit:2653 */
-  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:2655 */
-  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, 2655);
-  }
-  /* parser/parser.nit:2656 */
-  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:2657 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2659 */
-  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:2665 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2666 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2666);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2671;
-  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:2673 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2674 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2675 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2676 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2677 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2678 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2680 */
-  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, 2680);
-  }
-  /* parser/parser.nit:2681 */
-  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:2683 */
-  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, 2683);
-  }
-  /* parser/parser.nit:2684 */
-  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:2685 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2687 */
-  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:2693 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2694 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2694);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2699;
-  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:2701 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2702 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2703 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2704 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2705 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2706 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2707 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2709 */
-  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, 2709);
-  }
-  /* parser/parser.nit:2711 */
-  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, 2711);
-  }
-  /* parser/parser.nit:2712 */
-  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:2714 */
-  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, 2714);
-  }
-  /* parser/parser.nit:2715 */
-  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:2716 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2718 */
-  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:2724 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2725 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2725);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2730;
-  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:2732 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2733 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2734 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2735 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2736 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2737 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2738 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2740 */
-  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, 2740);
-  }
-  /* parser/parser.nit:2741 */
-  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:2743 */
-  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, 2743);
-  }
-  /* parser/parser.nit:2744 */
-  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:2746 */
-  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, 2746);
-  }
-  /* parser/parser.nit:2747 */
-  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:2748 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2750 */
-  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:2756 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2757 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2757);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2762;
-  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:2764 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2765 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2766 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2767 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2768 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2769 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2770 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2771 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2773 */
-  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, 2773);
-  }
-  /* parser/parser.nit:2775 */
-  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, 2775);
-  }
-  /* parser/parser.nit:2776 */
-  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:2778 */
-  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, 2778);
-  }
-  /* parser/parser.nit:2779 */
-  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:2781 */
-  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, 2781);
-  }
-  /* parser/parser.nit:2782 */
-  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:2783 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2785 */
-  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:2791 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2792 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2792);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2797;
-  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:2799 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2800 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2801 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2802 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2803 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2804 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2806 */
-  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, 2806);
-  }
-  /* parser/parser.nit:2808 */
-  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, 2808);
-  }
-  /* parser/parser.nit:2809 */
-  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:2810 */
-  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:2811 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2813 */
-  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:2819 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:2820 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2820);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2825;
-  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:2827 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2828 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2829 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2830 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2831 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2832 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2833 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2835 */
-  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, 2835);
-  }
-  /* parser/parser.nit:2837 */
-  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, 2837);
-  }
-  /* parser/parser.nit:2839 */
-  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, 2839);
-  }
-  /* parser/parser.nit:2840 */
-  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:2841 */
-  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:2842 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2844 */
-  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:2850 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2851 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2851);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2856;
-  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:2858 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2859 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2860 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2861 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2862 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2863 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2864 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2866 */
-  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, 2866);
-  }
-  /* parser/parser.nit:2867 */
-  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:2869 */
-  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, 2869);
-  }
-  /* parser/parser.nit:2871 */
-  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, 2871);
-  }
-  /* parser/parser.nit:2872 */
-  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:2873 */
-  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:2874 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2876 */
-  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:2882 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2883 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2883);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2888;
-  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:2890 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2891 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2892 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2893 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2894 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2895 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2896 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2897 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2899 */
-  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, 2899);
-  }
-  /* parser/parser.nit:2901 */
-  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, 2901);
-  }
-  /* parser/parser.nit:2902 */
-  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:2904 */
-  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, 2904);
-  }
-  /* parser/parser.nit:2906 */
-  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, 2906);
-  }
-  /* parser/parser.nit:2907 */
-  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:2908 */
-  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:2909 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2911 */
-  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:2917 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2918 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2918);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2923;
-  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:2925 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2926 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2927 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2928 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2929 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2930 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2931 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2933 */
-  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, 2933);
-  }
-  /* parser/parser.nit:2934 */
-  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:2936 */
-  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, 2936);
-  }
-  /* parser/parser.nit:2938 */
-  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, 2938);
-  }
-  /* parser/parser.nit:2939 */
-  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:2940 */
-  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:2941 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2943 */
-  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:2949 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:2950 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2950);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2955;
-  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:2957 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2958 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2959 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2960 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2961 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2962 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2963 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2964 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2966 */
-  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, 2966);
-  }
-  /* parser/parser.nit:2968 */
-  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, 2968);
-  }
-  /* parser/parser.nit:2969 */
-  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:2971 */
-  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, 2971);
-  }
-  /* parser/parser.nit:2973 */
-  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, 2973);
-  }
-  /* parser/parser.nit:2974 */
-  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:2975 */
-  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:2976 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:2978 */
-  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:2984 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:2985 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2985);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 2990;
-  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:2992 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:2993 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2994 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2995 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2996 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:2997 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2998 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:2999 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3001 */
-  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, 3001);
-  }
-  /* parser/parser.nit:3002 */
-  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:3004 */
-  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, 3004);
-  }
-  /* parser/parser.nit:3005 */
-  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:3007 */
-  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, 3007);
-  }
-  /* parser/parser.nit:3009 */
-  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, 3009);
-  }
-  /* parser/parser.nit:3010 */
-  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:3011 */
-  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:3012 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3014 */
-  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:3020 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3021 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3021);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3026;
-  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:3028 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3029 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3030 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3031 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3032 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3033 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3034 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3035 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3036 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3038 */
-  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, 3038);
-  }
-  /* parser/parser.nit:3040 */
-  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, 3040);
-  }
-  /* parser/parser.nit:3041 */
-  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:3043 */
-  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, 3043);
-  }
-  /* parser/parser.nit:3044 */
-  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:3046 */
-  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, 3046);
-  }
-  /* parser/parser.nit:3048 */
-  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, 3048);
-  }
-  /* parser/parser.nit:3049 */
-  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:3050 */
-  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:3051 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3053 */
-  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:3059 */
-  fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3060 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3060);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3065;
-  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:3067 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3068 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3069 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3070 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3071 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3072 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3073 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3075 */
-  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, 3075);
-  }
-  /* parser/parser.nit:3076 */
-  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:3077 */
-  fra.me.REG[8] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* parser/parser.nit:3081 */
-  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, 3081);
-  }
-  /* parser/parser.nit:3082 */
-  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:3083 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-  }
-  /* parser/parser.nit:3085 */
-  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:3086 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3088 */
-  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:3094 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:3095 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3095);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3100;
-  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:3102 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3103 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3104 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3105 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3106 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3107 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3108 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3110 */
-  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, 3110);
-  }
-  /* parser/parser.nit:3111 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3113 */
-  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, 3113);
-  }
-  /* parser/parser.nit:3114 */
-  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:3115 */
-  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* parser/parser.nit:3119 */
-  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, 3119);
-  }
-  /* parser/parser.nit:3120 */
-  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:3121 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-  }
-  /* parser/parser.nit:3123 */
-  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:3124 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3126 */
-  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:3132 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3133 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3133);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3138;
-  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:3140 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3141 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3142 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3143 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3144 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3145 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3146 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3148 */
-  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, 3148);
-  }
-  /* parser/parser.nit:3149 */
-  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:3150 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3152 */
-  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3152);
-  }
-  /* parser/parser.nit:3153 */
-  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
-  fra.me.REG[5] = fra.me.REG[4];
-  /* parser/parser.nit:3154 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3158 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3158);
-  }
-  /* parser/parser.nit:3159 */
-  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:3160 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:3162 */
-  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:3163 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3165 */
-  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:3171 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3172 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3172);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3177;
-  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:3179 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3180 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3181 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3182 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3183 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3184 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3185 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3186 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3188 */
-  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, 3188);
-  }
-  /* parser/parser.nit:3190 */
-  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, 3190);
-  }
-  /* parser/parser.nit:3191 */
-  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:3192 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3194 */
-  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, 3194);
-  }
-  /* parser/parser.nit:3195 */
-  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:3196 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3200 */
-  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, 3200);
-  }
-  /* parser/parser.nit:3201 */
-  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:3202 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:3204 */
-  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:3205 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3207 */
-  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:3213 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3214 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3214);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3219;
-  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:3221 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3222 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3223 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3224 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3225 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3226 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3227 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3229 */
-  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, 3229);
-  }
-  /* parser/parser.nit:3230 */
-  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:3231 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3233 */
-  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, 3233);
-  }
-  /* parser/parser.nit:3234 */
-  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:3235 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3239 */
-  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, 3239);
-  }
-  /* parser/parser.nit:3240 */
-  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:3241 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:3243 */
-  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:3244 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3246 */
-  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:3252 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3253 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3253);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3258;
-  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:3260 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3261 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3262 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3263 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3264 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3265 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3266 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3267 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3269 */
-  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, 3269);
-  }
-  /* parser/parser.nit:3271 */
-  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, 3271);
-  }
-  /* parser/parser.nit:3272 */
-  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:3273 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3275 */
-  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, 3275);
-  }
-  /* parser/parser.nit:3276 */
-  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:3277 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3281 */
-  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, 3281);
-  }
-  /* parser/parser.nit:3282 */
-  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:3283 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:3285 */
-  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:3286 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3288 */
-  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:3294 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3295 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3295);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3300;
-  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:3302 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3303 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3304 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3305 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3306 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3307 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3308 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3309 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3311 */
-  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, 3311);
-  }
-  /* parser/parser.nit:3312 */
-  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:3314 */
-  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, 3314);
-  }
-  /* parser/parser.nit:3315 */
-  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:3316 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3318 */
-  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, 3318);
-  }
-  /* parser/parser.nit:3319 */
-  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:3320 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3324 */
-  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, 3324);
-  }
-  /* parser/parser.nit:3325 */
-  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:3326 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:3328 */
-  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:3329 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3331 */
-  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:3337 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3338 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3338);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3343;
-  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:3345 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3346 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3347 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3348 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3349 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3350 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3351 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3352 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3353 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3355 */
-  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, 3355);
-  }
-  /* parser/parser.nit:3357 */
-  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, 3357);
-  }
-  /* parser/parser.nit:3358 */
-  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:3360 */
-  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, 3360);
-  }
-  /* parser/parser.nit:3361 */
-  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:3362 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3364 */
-  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, 3364);
-  }
-  /* parser/parser.nit:3365 */
-  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:3366 */
-  fra.me.REG[5] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* parser/parser.nit:3370 */
-  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, 3370);
-  }
-  /* parser/parser.nit:3371 */
-  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:3372 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:3374 */
-  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:3375 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3377 */
-  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:3383 */
-  fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3384 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3384);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3389;
-  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:3391 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3392 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3393 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3394 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3395 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3396 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3397 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3399 */
-  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, 3399);
-  }
-  /* parser/parser.nit:3400 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3402 */
-  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, 3402);
-  }
-  /* parser/parser.nit:3403 */
-  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:3404 */
-  fra.me.REG[9] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* parser/parser.nit:3408 */
-  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, 3408);
-  }
-  /* parser/parser.nit:3409 */
-  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:3410 */
-  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:3411 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-  }
-  /* parser/parser.nit:3413 */
-  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:3414 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3416 */
-  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:3422 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:3423 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3423);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3428;
-  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:3430 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3431 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3432 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3433 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3434 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3435 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3436 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3437 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3439 */
-  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, 3439);
-  }
-  /* parser/parser.nit:3441 */
-  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, 3441);
-  }
-  /* parser/parser.nit:3442 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3444 */
-  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, 3444);
-  }
-  /* parser/parser.nit:3445 */
-  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:3446 */
-  fra.me.REG[10] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[10]);
-  /* parser/parser.nit:3450 */
-  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, 3450);
-  }
-  /* parser/parser.nit:3451 */
-  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:3452 */
-  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:3453 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
-  }
-  /* parser/parser.nit:3455 */
-  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:3456 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3458 */
-  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:3464 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3465 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3465);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3470;
-  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:3472 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3473 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3474 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3475 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3476 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3477 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3478 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3479 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3481 */
-  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, 3481);
-  }
-  /* parser/parser.nit:3482 */
-  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:3484 */
-  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, 3484);
-  }
-  /* parser/parser.nit:3485 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3487 */
-  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, 3487);
-  }
-  /* parser/parser.nit:3488 */
-  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:3489 */
-  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3493 */
-  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, 3493);
-  }
-  /* parser/parser.nit:3494 */
-  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:3495 */
-  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:3496 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
-  }
-  /* parser/parser.nit:3498 */
-  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:3499 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3501 */
-  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:3507 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3508 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3508);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3513;
-  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:3515 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3516 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3517 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3518 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3519 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3520 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3521 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3522 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3523 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3525 */
-  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, 3525);
-  }
-  /* parser/parser.nit:3527 */
-  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, 3527);
-  }
-  /* parser/parser.nit:3528 */
-  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:3530 */
-  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, 3530);
-  }
-  /* parser/parser.nit:3531 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3533 */
-  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, 3533);
-  }
-  /* parser/parser.nit:3534 */
-  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:3535 */
-  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3539 */
-  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, 3539);
-  }
-  /* parser/parser.nit:3540 */
-  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:3541 */
-  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:3542 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
-  }
-  /* parser/parser.nit:3544 */
-  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:3545 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3547 */
-  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:3553 */
-  fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3554 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3554);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3559;
-  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:3561 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3562 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3563 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3564 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3565 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3566 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3567 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3568 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3570 */
-  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, 3570);
-  }
-  /* parser/parser.nit:3571 */
-  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:3573 */
-  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, 3573);
-  }
-  /* parser/parser.nit:3574 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3576 */
-  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, 3576);
-  }
-  /* parser/parser.nit:3577 */
-  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:3578 */
-  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3582 */
-  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, 3582);
-  }
-  /* parser/parser.nit:3583 */
-  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:3584 */
-  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:3585 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
-  }
-  /* parser/parser.nit:3587 */
-  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:3588 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3590 */
-  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:3596 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:3597 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3597);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3602;
-  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:3604 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3605 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3606 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3607 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3608 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3609 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3610 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3611 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3612 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3614 */
-  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, 3614);
-  }
-  /* parser/parser.nit:3616 */
-  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, 3616);
-  }
-  /* parser/parser.nit:3617 */
-  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:3619 */
-  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, 3619);
-  }
-  /* parser/parser.nit:3620 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3622 */
-  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, 3622);
-  }
-  /* parser/parser.nit:3623 */
-  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:3624 */
-  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3628 */
-  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, 3628);
-  }
-  /* parser/parser.nit:3629 */
-  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:3630 */
-  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:3631 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
-  }
-  /* parser/parser.nit:3633 */
-  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:3634 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3636 */
-  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:3642 */
-  fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3643 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3643);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3648;
-  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:3650 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3651 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3652 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3653 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3654 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3655 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3656 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3657 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3658 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3660 */
-  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, 3660);
-  }
-  /* parser/parser.nit:3661 */
-  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:3663 */
-  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, 3663);
-  }
-  /* parser/parser.nit:3664 */
-  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:3666 */
-  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, 3666);
-  }
-  /* parser/parser.nit:3667 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3669 */
-  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, 3669);
-  }
-  /* parser/parser.nit:3670 */
-  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:3671 */
-  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3675 */
-  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, 3675);
-  }
-  /* parser/parser.nit:3676 */
-  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:3677 */
-  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:3678 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[6]);
-  }
-  /* parser/parser.nit:3680 */
-  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:3681 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3683 */
-  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:3689 */
-  fra.me.REG[2] = fra.me.REG[10];
-  /* parser/parser.nit:3690 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3690);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3695;
-  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:3697 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3698 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3699 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3700 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3701 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3702 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3703 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3704 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3705 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3706 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3708 */
-  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, 3708);
-  }
-  /* parser/parser.nit:3710 */
-  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, 3710);
-  }
-  /* parser/parser.nit:3711 */
-  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:3713 */
-  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, 3713);
-  }
-  /* parser/parser.nit:3714 */
-  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:3716 */
-  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, 3716);
-  }
-  /* parser/parser.nit:3717 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3719 */
-  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, 3719);
-  }
-  /* parser/parser.nit:3720 */
-  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:3721 */
-  fra.me.REG[6] = NEW_ATopClassdef_parser___parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* parser/parser.nit:3725 */
-  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, 3725);
-  }
-  /* parser/parser.nit:3726 */
-  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:3727 */
-  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:3728 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[6]);
-  }
-  /* parser/parser.nit:3730 */
-  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:3731 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3733 */
-  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:3739 */
-  fra.me.REG[2] = fra.me.REG[11];
-  /* parser/parser.nit:3740 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3740);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3745;
-  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:3747 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3748 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3749 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3750 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3751 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3752 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3754 */
-  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, 3754);
-  }
-  /* parser/parser.nit:3756 */
-  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, 3756);
-  }
-  /* parser/parser.nit:3758 */
-  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, 3758);
-  }
-  /* parser/parser.nit:3759 */
-  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:3765 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3766 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3766);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3771;
-  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:3773 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3774 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3775 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3776 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3777 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3778 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3779 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3781 */
-  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, 3781);
-  }
-  /* parser/parser.nit:3783 */
-  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, 3783);
-  }
-  /* parser/parser.nit:3785 */
-  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, 3785);
-  }
-  /* parser/parser.nit:3787 */
-  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, 3787);
-  }
-  /* parser/parser.nit:3788 */
-  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:3794 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3795 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3795);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3800;
-  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:3802 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3803 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3804 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3805 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3806 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3807 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3808 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3810 */
-  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, 3810);
-  }
-  /* parser/parser.nit:3812 */
-  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, 3812);
-  }
-  /* parser/parser.nit:3814 */
-  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, 3814);
-  }
-  /* parser/parser.nit:3815 */
-  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:3821 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3822 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3822);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3827;
-  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:3829 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3830 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3831 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3832 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3833 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3834 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3835 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3836 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3838 */
-  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, 3838);
-  }
-  /* parser/parser.nit:3840 */
-  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, 3840);
-  }
-  /* parser/parser.nit:3842 */
-  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, 3842);
-  }
-  /* parser/parser.nit:3844 */
-  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, 3844);
-  }
-  /* parser/parser.nit:3845 */
-  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:3851 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3852 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3852);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 3857;
-  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:3859 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3860 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3861 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3862 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3863 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3864 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3865 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3867 */
-  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, 3867);
-  }
-  /* parser/parser.nit:3869 */
-  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, 3869);
-  }
-  /* parser/parser.nit:3871 */
-  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, 3871);
-  }
-  /* parser/parser.nit:3872 */
-  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:3877 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3878 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3878);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3883;
-  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:3885 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3886 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3887 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3889 */
-  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, 3889);
-  }
-  /* parser/parser.nit:3890 */
-  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:3891 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:3893 */
-  fra.me.REG[4] = NEW_AMainClassdef_parser___parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[4]);
-  /* parser/parser.nit:3896 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:3897 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3897);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3902;
-  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:3904 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3905 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3906 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3907 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3907);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3912;
-  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:3914 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3915 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3916 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3918 */
-  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, 3918);
-  }
-  /* parser/parser.nit:3919 */
-  fra.me.REG[3] = NEW_AMainMethPropdef_parser___parser_prod___AMainMethPropdef___init_amainmethpropdef(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:3923 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3924 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3924);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3929;
-  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:3931 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3932 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3933 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3934 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3935 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3936 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3937 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3938 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3939 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3940 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3941 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3943 */
-  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, 3943);
-  }
-  /* parser/parser.nit:3945 */
-  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, 3945);
-  }
-  /* parser/parser.nit:3947 */
-  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, 3947);
-  }
-  /* parser/parser.nit:3949 */
-  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, 3949);
-  }
-  /* parser/parser.nit:3951 */
-  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, 3951);
-  }
-  /* parser/parser.nit:3952 */
-  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:3965 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:3966 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3966);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 3971;
-  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:3973 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:3974 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3975 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3976 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3977 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3978 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3979 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3980 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3981 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:3982 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3983 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3984 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:3986 */
-  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, 3986);
-  }
-  /* parser/parser.nit:3988 */
-  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, 3988);
-  }
-  /* parser/parser.nit:3990 */
-  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, 3990);
-  }
-  /* parser/parser.nit:3992 */
-  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, 3992);
-  }
-  /* parser/parser.nit:3994 */
-  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, 3994);
-  }
-  /* parser/parser.nit:3996 */
-  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, 3996);
-  }
-  /* parser/parser.nit:3997 */
-  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:4010 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4011 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4011);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4016;
-  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:4018 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4019 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4020 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4021 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4022 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4023 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4024 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4025 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4026 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4027 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4028 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4029 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4031 */
-  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, 4031);
-  }
-  /* parser/parser.nit:4033 */
-  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, 4033);
-  }
-  /* parser/parser.nit:4035 */
-  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, 4035);
-  }
-  /* parser/parser.nit:4037 */
-  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, 4037);
-  }
-  /* parser/parser.nit:4039 */
-  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, 4039);
-  }
-  /* parser/parser.nit:4040 */
-  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:4042 */
-  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, 4042);
-  }
-  /* parser/parser.nit:4043 */
-  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:4056 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4057 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4057);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4062;
-  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:4064 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4065 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4066 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4067 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4068 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4069 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4070 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4071 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4072 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4073 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4074 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4075 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4076 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4078 */
-  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, 4078);
-  }
-  /* parser/parser.nit:4080 */
-  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, 4080);
-  }
-  /* parser/parser.nit:4082 */
-  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, 4082);
-  }
-  /* parser/parser.nit:4084 */
-  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, 4084);
-  }
-  /* parser/parser.nit:4086 */
-  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, 4086);
-  }
-  /* parser/parser.nit:4088 */
-  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, 4088);
-  }
-  /* parser/parser.nit:4089 */
-  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:4091 */
-  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, 4091);
-  }
-  /* parser/parser.nit:4092 */
-  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:4105 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4106 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4106);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4111;
-  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:4113 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4114 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4115 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4116 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4117 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4118 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4119 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4120 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4121 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4122 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4123 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4124 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4126 */
-  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, 4126);
-  }
-  /* parser/parser.nit:4128 */
-  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, 4128);
-  }
-  /* parser/parser.nit:4130 */
-  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, 4130);
-  }
-  /* parser/parser.nit:4132 */
-  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, 4132);
-  }
-  /* parser/parser.nit:4133 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4135 */
-  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[Object]*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4135);
-  }
-  /* parser/parser.nit:4136 */
-  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
-  fra.me.REG[12] = fra.me.REG[4];
-  /* parser/parser.nit:4137 */
-  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:4144 */
-  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, 4144);
-  }
-  /* parser/parser.nit:4145 */
-  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:4158 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4159 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4159);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4164;
-  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:4166 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4167 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4168 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4169 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4170 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4171 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4172 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4173 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4174 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4175 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4176 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4177 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4178 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4180 */
-  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, 4180);
-  }
-  /* parser/parser.nit:4182 */
-  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, 4182);
-  }
-  /* parser/parser.nit:4184 */
-  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, 4184);
-  }
-  /* parser/parser.nit:4186 */
-  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, 4186);
-  }
-  /* parser/parser.nit:4188 */
-  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, 4188);
-  }
-  /* parser/parser.nit:4189 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4191 */
-  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, 4191);
-  }
-  /* parser/parser.nit:4192 */
-  fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[4]);
-  fra.me.REG[13] = fra.me.REG[4];
-  /* parser/parser.nit:4193 */
-  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:4200 */
-  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, 4200);
-  }
-  /* parser/parser.nit:4201 */
-  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:4214 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4215 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4215);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4220;
-  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:4222 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4223 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4224 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4225 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4226 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4227 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4228 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4229 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4230 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4231 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4232 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4233 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4234 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4236 */
-  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, 4236);
-  }
-  /* parser/parser.nit:4238 */
-  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, 4238);
-  }
-  /* parser/parser.nit:4240 */
-  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, 4240);
-  }
-  /* parser/parser.nit:4242 */
-  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, 4242);
-  }
-  /* parser/parser.nit:4244 */
-  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, 4244);
-  }
-  /* parser/parser.nit:4245 */
-  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:4246 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4248 */
-  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, 4248);
-  }
-  /* parser/parser.nit:4249 */
-  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:4250 */
-  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:4257 */
-  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, 4257);
-  }
-  /* parser/parser.nit:4258 */
-  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:4271 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4272 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4272);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4277;
-  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:4279 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4280 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4281 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4282 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4283 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4284 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4285 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4286 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4287 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4288 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4289 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4290 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4291 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4292 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4294 */
-  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, 4294);
-  }
-  /* parser/parser.nit:4296 */
-  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, 4296);
-  }
-  /* parser/parser.nit:4298 */
-  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, 4298);
-  }
-  /* parser/parser.nit:4300 */
-  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, 4300);
-  }
-  /* parser/parser.nit:4302 */
-  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, 4302);
-  }
-  /* parser/parser.nit:4304 */
-  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, 4304);
-  }
-  /* parser/parser.nit:4305 */
-  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:4306 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4308 */
-  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, 4308);
-  }
-  /* parser/parser.nit:4309 */
-  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:4310 */
-  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:4317 */
-  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, 4317);
-  }
-  /* parser/parser.nit:4318 */
-  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:4331 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4332 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4332);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4337;
-  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:4339 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4340 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4341 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4342 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4343 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4344 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4345 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4346 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4347 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4348 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4349 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4350 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4352 */
-  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, 4352);
-  }
-  /* parser/parser.nit:4354 */
-  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, 4354);
-  }
-  /* parser/parser.nit:4356 */
-  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, 4356);
-  }
-  /* parser/parser.nit:4358 */
-  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, 4358);
-  }
-  /* parser/parser.nit:4360 */
-  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, 4360);
-  }
-  /* parser/parser.nit:4362 */
-  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, 4362);
-  }
-  /* parser/parser.nit:4363 */
-  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:4376 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4377 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4377);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4382;
-  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:4384 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4385 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4386 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4387 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4388 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4389 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4390 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4391 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4392 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4393 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4394 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4395 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4396 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4398 */
-  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, 4398);
-  }
-  /* parser/parser.nit:4400 */
-  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, 4400);
-  }
-  /* parser/parser.nit:4402 */
-  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, 4402);
-  }
-  /* parser/parser.nit:4404 */
-  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, 4404);
-  }
-  /* parser/parser.nit:4406 */
-  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, 4406);
-  }
-  /* parser/parser.nit:4408 */
-  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, 4408);
-  }
-  /* parser/parser.nit:4410 */
-  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, 4410);
-  }
-  /* parser/parser.nit:4411 */
-  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:4424 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4425 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4425);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4430;
-  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:4432 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4433 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4434 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4435 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4436 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4437 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4438 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4439 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4440 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4441 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4442 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4443 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4444 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4446 */
-  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, 4446);
-  }
-  /* parser/parser.nit:4448 */
-  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, 4448);
-  }
-  /* parser/parser.nit:4450 */
-  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, 4450);
-  }
-  /* parser/parser.nit:4452 */
-  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, 4452);
-  }
-  /* parser/parser.nit:4454 */
-  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, 4454);
-  }
-  /* parser/parser.nit:4455 */
-  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:4457 */
-  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, 4457);
-  }
-  /* parser/parser.nit:4459 */
-  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, 4459);
-  }
-  /* parser/parser.nit:4460 */
-  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:4473 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4474 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4474);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4479;
-  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:4481 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4482 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4483 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4484 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4485 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4486 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4487 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4488 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4489 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4490 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4491 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4492 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4493 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4494 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4496 */
-  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, 4496);
-  }
-  /* parser/parser.nit:4498 */
-  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, 4498);
-  }
-  /* parser/parser.nit:4500 */
-  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, 4500);
-  }
-  /* parser/parser.nit:4502 */
-  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, 4502);
-  }
-  /* parser/parser.nit:4504 */
-  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, 4504);
-  }
-  /* parser/parser.nit:4506 */
-  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, 4506);
-  }
-  /* parser/parser.nit:4507 */
-  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:4509 */
-  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, 4509);
-  }
-  /* parser/parser.nit:4511 */
-  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, 4511);
-  }
-  /* parser/parser.nit:4512 */
-  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:4525 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4526 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4526);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4531;
-  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:4533 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4534 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4535 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4536 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4537 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4538 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4539 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4540 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4541 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4542 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4543 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4544 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4545 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4547 */
-  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, 4547);
-  }
-  /* parser/parser.nit:4549 */
-  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, 4549);
-  }
-  /* parser/parser.nit:4551 */
-  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, 4551);
-  }
-  /* parser/parser.nit:4553 */
-  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, 4553);
-  }
-  /* parser/parser.nit:4554 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4556 */
-  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, 4556);
-  }
-  /* parser/parser.nit:4557 */
-  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:4558 */
-  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:4565 */
-  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, 4565);
-  }
-  /* parser/parser.nit:4567 */
-  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, 4567);
-  }
-  /* parser/parser.nit:4568 */
-  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:4581 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4582 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4582);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4587;
-  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:4589 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4590 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4591 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4592 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4593 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4594 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4595 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4596 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4597 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4598 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4599 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4600 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4601 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4602 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4604 */
-  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, 4604);
-  }
-  /* parser/parser.nit:4606 */
-  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, 4606);
-  }
-  /* parser/parser.nit:4608 */
-  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, 4608);
-  }
-  /* parser/parser.nit:4610 */
-  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, 4610);
-  }
-  /* parser/parser.nit:4612 */
-  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, 4612);
-  }
-  /* parser/parser.nit:4613 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4615 */
-  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, 4615);
-  }
-  /* parser/parser.nit:4616 */
-  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:4617 */
-  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:4624 */
-  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, 4624);
-  }
-  /* parser/parser.nit:4626 */
-  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, 4626);
-  }
-  /* parser/parser.nit:4627 */
-  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:4640 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4641 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4641);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4646;
-  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:4648 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4649 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4650 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4651 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4652 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4653 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4654 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4655 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4656 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4657 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4658 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4659 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4660 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4661 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4663 */
-  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, 4663);
-  }
-  /* parser/parser.nit:4665 */
-  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, 4665);
-  }
-  /* parser/parser.nit:4667 */
-  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, 4667);
-  }
-  /* parser/parser.nit:4669 */
-  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, 4669);
-  }
-  /* parser/parser.nit:4671 */
-  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, 4671);
-  }
-  /* parser/parser.nit:4672 */
-  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:4673 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4675 */
-  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, 4675);
-  }
-  /* parser/parser.nit:4676 */
-  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:4677 */
-  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:4684 */
-  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, 4684);
-  }
-  /* parser/parser.nit:4686 */
-  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, 4686);
-  }
-  /* parser/parser.nit:4687 */
-  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:4700 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4701 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4701);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4706;
-  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:4708 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4709 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4710 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4711 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4712 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4713 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4714 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4715 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4716 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4717 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4718 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4719 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4720 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4721 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4722 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4724 */
-  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, 4724);
-  }
-  /* parser/parser.nit:4726 */
-  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, 4726);
-  }
-  /* parser/parser.nit:4728 */
-  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, 4728);
-  }
-  /* parser/parser.nit:4730 */
-  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, 4730);
-  }
-  /* parser/parser.nit:4732 */
-  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, 4732);
-  }
-  /* parser/parser.nit:4734 */
-  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, 4734);
-  }
-  /* parser/parser.nit:4735 */
-  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:4736 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4738 */
-  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, 4738);
-  }
-  /* parser/parser.nit:4739 */
-  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:4740 */
-  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:4747 */
-  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, 4747);
-  }
-  /* parser/parser.nit:4749 */
-  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, 4749);
-  }
-  /* parser/parser.nit:4750 */
-  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:4763 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4764 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4764);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4769;
-  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:4771 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4772 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4773 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4774 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4775 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4776 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4777 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4778 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4779 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4780 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4781 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4782 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4784 */
-  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, 4784);
-  }
-  /* parser/parser.nit:4786 */
-  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, 4786);
-  }
-  /* parser/parser.nit:4788 */
-  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, 4788);
-  }
-  /* parser/parser.nit:4790 */
-  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, 4790);
-  }
-  /* parser/parser.nit:4792 */
-  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, 4792);
-  }
-  /* parser/parser.nit:4793 */
-  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:4795 */
-  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, 4795);
-  }
-  /* parser/parser.nit:4796 */
-  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:4809 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4810 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4810);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4815;
-  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:4817 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4818 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4819 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4820 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4821 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4822 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4823 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4824 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4825 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4826 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4827 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4828 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4829 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4831 */
-  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, 4831);
-  }
-  /* parser/parser.nit:4833 */
-  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, 4833);
-  }
-  /* parser/parser.nit:4835 */
-  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, 4835);
-  }
-  /* parser/parser.nit:4837 */
-  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, 4837);
-  }
-  /* parser/parser.nit:4839 */
-  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, 4839);
-  }
-  /* parser/parser.nit:4841 */
-  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, 4841);
-  }
-  /* parser/parser.nit:4842 */
-  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:4844 */
-  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, 4844);
-  }
-  /* parser/parser.nit:4845 */
-  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:4858 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4859 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4859);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4864;
-  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:4866 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4867 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4868 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4869 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4870 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4871 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4872 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4873 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4874 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4875 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4876 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4877 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4878 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4880 */
-  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, 4880);
-  }
-  /* parser/parser.nit:4882 */
-  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, 4882);
-  }
-  /* parser/parser.nit:4884 */
-  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, 4884);
-  }
-  /* parser/parser.nit:4886 */
-  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, 4886);
-  }
-  /* parser/parser.nit:4888 */
-  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, 4888);
-  }
-  /* parser/parser.nit:4889 */
-  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:4891 */
-  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, 4891);
-  }
-  /* parser/parser.nit:4892 */
-  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:4894 */
-  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, 4894);
-  }
-  /* parser/parser.nit:4895 */
-  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:4908 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4909 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4909);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4914;
-  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:4916 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4917 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4918 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4919 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4920 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4921 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4922 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4923 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4924 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4925 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4926 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4927 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4928 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4929 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4931 */
-  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, 4931);
-  }
-  /* parser/parser.nit:4933 */
-  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, 4933);
-  }
-  /* parser/parser.nit:4935 */
-  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, 4935);
-  }
-  /* parser/parser.nit:4937 */
-  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, 4937);
-  }
-  /* parser/parser.nit:4939 */
-  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, 4939);
-  }
-  /* parser/parser.nit:4941 */
-  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, 4941);
-  }
-  /* parser/parser.nit:4942 */
-  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:4944 */
-  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, 4944);
-  }
-  /* parser/parser.nit:4945 */
-  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:4947 */
-  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, 4947);
-  }
-  /* parser/parser.nit:4948 */
-  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:4961 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:4962 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4962);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 4967;
-  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:4969 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:4970 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4971 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4972 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4973 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4974 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4975 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4976 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4977 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4978 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:4979 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4980 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4981 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4983 */
-  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, 4983);
-  }
-  /* parser/parser.nit:4985 */
-  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, 4985);
-  }
-  /* parser/parser.nit:4987 */
-  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, 4987);
-  }
-  /* parser/parser.nit:4989 */
-  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, 4989);
-  }
-  /* parser/parser.nit:4990 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:4992 */
-  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, 4992);
-  }
-  /* parser/parser.nit:4993 */
-  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:4994 */
-  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:5001 */
-  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, 5001);
-  }
-  /* parser/parser.nit:5002 */
-  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:5004 */
-  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, 5004);
-  }
-  /* parser/parser.nit:5005 */
-  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:5018 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5019 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5019);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5024;
-  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:5026 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5027 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5028 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5029 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5030 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5031 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5032 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5033 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5034 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5035 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5036 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5037 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5038 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5039 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5041 */
-  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, 5041);
-  }
-  /* parser/parser.nit:5043 */
-  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, 5043);
-  }
-  /* parser/parser.nit:5045 */
-  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, 5045);
-  }
-  /* parser/parser.nit:5047 */
-  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, 5047);
-  }
-  /* parser/parser.nit:5049 */
-  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, 5049);
-  }
-  /* parser/parser.nit:5050 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5052 */
-  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, 5052);
-  }
-  /* parser/parser.nit:5053 */
-  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:5054 */
-  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:5061 */
-  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, 5061);
-  }
-  /* parser/parser.nit:5062 */
-  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:5064 */
-  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, 5064);
-  }
-  /* parser/parser.nit:5065 */
-  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:5078 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5079 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5079);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5084;
-  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:5086 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5087 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5088 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5089 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5090 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5091 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5092 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5093 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5094 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5095 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5096 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5097 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5098 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5099 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5101 */
-  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, 5101);
-  }
-  /* parser/parser.nit:5103 */
-  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, 5103);
-  }
-  /* parser/parser.nit:5105 */
-  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, 5105);
-  }
-  /* parser/parser.nit:5107 */
-  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, 5107);
-  }
-  /* parser/parser.nit:5109 */
-  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, 5109);
-  }
-  /* parser/parser.nit:5110 */
-  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:5111 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5113 */
-  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, 5113);
-  }
-  /* parser/parser.nit:5114 */
-  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:5115 */
-  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:5122 */
-  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, 5122);
-  }
-  /* parser/parser.nit:5123 */
-  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:5125 */
-  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, 5125);
-  }
-  /* parser/parser.nit:5126 */
-  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:5139 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5140 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5140);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5145;
-  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:5147 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5148 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5149 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5150 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5151 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5152 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5153 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5154 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5155 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5156 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5157 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5158 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5159 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5160 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5161 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5163 */
-  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, 5163);
-  }
-  /* parser/parser.nit:5165 */
-  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, 5165);
-  }
-  /* parser/parser.nit:5167 */
-  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, 5167);
-  }
-  /* parser/parser.nit:5169 */
-  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, 5169);
-  }
-  /* parser/parser.nit:5171 */
-  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, 5171);
-  }
-  /* parser/parser.nit:5173 */
-  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, 5173);
-  }
-  /* parser/parser.nit:5174 */
-  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:5175 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5177 */
-  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, 5177);
-  }
-  /* parser/parser.nit:5178 */
-  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:5179 */
-  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:5186 */
-  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, 5186);
-  }
-  /* parser/parser.nit:5187 */
-  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:5189 */
-  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, 5189);
-  }
-  /* parser/parser.nit:5190 */
-  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:5203 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5204 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5204);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5209;
-  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:5211 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5212 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5213 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5214 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5215 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5216 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5217 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5218 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5219 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5220 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5221 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5222 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5223 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5225 */
-  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, 5225);
-  }
-  /* parser/parser.nit:5227 */
-  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, 5227);
-  }
-  /* parser/parser.nit:5229 */
-  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, 5229);
-  }
-  /* parser/parser.nit:5231 */
-  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, 5231);
-  }
-  /* parser/parser.nit:5233 */
-  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, 5233);
-  }
-  /* parser/parser.nit:5235 */
-  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, 5235);
-  }
-  /* parser/parser.nit:5236 */
-  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:5238 */
-  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, 5238);
-  }
-  /* parser/parser.nit:5239 */
-  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:5252 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5253 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5253);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5258;
-  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:5260 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5261 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5262 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5263 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5264 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5265 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5266 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5267 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5268 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5269 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5270 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5271 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5272 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5273 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5275 */
-  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, 5275);
-  }
-  /* parser/parser.nit:5277 */
-  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, 5277);
-  }
-  /* parser/parser.nit:5279 */
-  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, 5279);
-  }
-  /* parser/parser.nit:5281 */
-  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, 5281);
-  }
-  /* parser/parser.nit:5283 */
-  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, 5283);
-  }
-  /* parser/parser.nit:5285 */
-  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, 5285);
-  }
-  /* parser/parser.nit:5287 */
-  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, 5287);
-  }
-  /* parser/parser.nit:5288 */
-  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:5290 */
-  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, 5290);
-  }
-  /* parser/parser.nit:5291 */
-  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:5304 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5305 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5305);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5310;
-  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:5312 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5313 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5314 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5315 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5316 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5317 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5318 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5319 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5320 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5321 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5322 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5323 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5324 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5325 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5327 */
-  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, 5327);
-  }
-  /* parser/parser.nit:5329 */
-  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, 5329);
-  }
-  /* parser/parser.nit:5331 */
-  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, 5331);
-  }
-  /* parser/parser.nit:5333 */
-  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, 5333);
-  }
-  /* parser/parser.nit:5335 */
-  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, 5335);
-  }
-  /* parser/parser.nit:5336 */
-  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:5338 */
-  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, 5338);
-  }
-  /* parser/parser.nit:5340 */
-  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, 5340);
-  }
-  /* parser/parser.nit:5341 */
-  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:5343 */
-  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, 5343);
-  }
-  /* parser/parser.nit:5344 */
-  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:5357 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5358 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5358);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5363;
-  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:5365 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5366 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5367 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5368 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5369 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5370 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5371 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5372 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5373 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5374 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5375 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5376 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5377 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5378 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5379 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5381 */
-  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, 5381);
-  }
-  /* parser/parser.nit:5383 */
-  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, 5383);
-  }
-  /* parser/parser.nit:5385 */
-  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, 5385);
-  }
-  /* parser/parser.nit:5387 */
-  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, 5387);
-  }
-  /* parser/parser.nit:5389 */
-  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, 5389);
-  }
-  /* parser/parser.nit:5391 */
-  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, 5391);
-  }
-  /* parser/parser.nit:5392 */
-  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:5394 */
-  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, 5394);
-  }
-  /* parser/parser.nit:5396 */
-  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, 5396);
-  }
-  /* parser/parser.nit:5397 */
-  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:5399 */
-  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, 5399);
-  }
-  /* parser/parser.nit:5400 */
-  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:5413 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5414 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5414);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5419;
-  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:5421 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5422 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5423 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5424 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5425 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5426 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5427 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5428 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5429 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5430 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5431 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5432 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5433 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5434 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5436 */
-  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, 5436);
-  }
-  /* parser/parser.nit:5438 */
-  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, 5438);
-  }
-  /* parser/parser.nit:5440 */
-  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, 5440);
-  }
-  /* parser/parser.nit:5442 */
-  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, 5442);
-  }
-  /* parser/parser.nit:5443 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5445 */
-  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, 5445);
-  }
-  /* parser/parser.nit:5446 */
-  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:5447 */
-  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:5454 */
-  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, 5454);
-  }
-  /* parser/parser.nit:5456 */
-  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, 5456);
-  }
-  /* parser/parser.nit:5457 */
-  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:5459 */
-  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, 5459);
-  }
-  /* parser/parser.nit:5460 */
-  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:5473 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5474 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5474);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5479;
-  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:5481 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5482 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5483 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5484 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5485 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5486 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5487 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5488 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5489 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5490 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5491 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5492 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5493 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5494 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5495 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5497 */
-  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, 5497);
-  }
-  /* parser/parser.nit:5499 */
-  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, 5499);
-  }
-  /* parser/parser.nit:5501 */
-  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, 5501);
-  }
-  /* parser/parser.nit:5503 */
-  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, 5503);
-  }
-  /* parser/parser.nit:5505 */
-  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, 5505);
-  }
-  /* parser/parser.nit:5506 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5508 */
-  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, 5508);
-  }
-  /* parser/parser.nit:5509 */
-  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:5510 */
-  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:5517 */
-  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, 5517);
-  }
-  /* parser/parser.nit:5519 */
-  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, 5519);
-  }
-  /* parser/parser.nit:5520 */
-  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:5522 */
-  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, 5522);
-  }
-  /* parser/parser.nit:5523 */
-  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:5536 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5537 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5537);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5542;
-  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:5544 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5545 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5546 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5547 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5548 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5549 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5550 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5551 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5552 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5553 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5554 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5555 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5556 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5557 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5558 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5560 */
-  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, 5560);
-  }
-  /* parser/parser.nit:5562 */
-  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, 5562);
-  }
-  /* parser/parser.nit:5564 */
-  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, 5564);
-  }
-  /* parser/parser.nit:5566 */
-  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, 5566);
-  }
-  /* parser/parser.nit:5568 */
-  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, 5568);
-  }
-  /* parser/parser.nit:5569 */
-  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:5570 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5572 */
-  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, 5572);
-  }
-  /* parser/parser.nit:5573 */
-  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:5574 */
-  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:5581 */
-  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, 5581);
-  }
-  /* parser/parser.nit:5583 */
-  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, 5583);
-  }
-  /* parser/parser.nit:5584 */
-  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:5586 */
-  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, 5586);
-  }
-  /* parser/parser.nit:5587 */
-  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:5600 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5601 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5601);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5606;
-  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:5608 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5609 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5610 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5611 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5612 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5613 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5614 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5615 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5616 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5617 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5618 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5619 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5620 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5621 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5622 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5623 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5625 */
-  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, 5625);
-  }
-  /* parser/parser.nit:5627 */
-  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, 5627);
-  }
-  /* parser/parser.nit:5629 */
-  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, 5629);
-  }
-  /* parser/parser.nit:5631 */
-  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, 5631);
-  }
-  /* parser/parser.nit:5633 */
-  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, 5633);
-  }
-  /* parser/parser.nit:5635 */
-  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, 5635);
-  }
-  /* parser/parser.nit:5636 */
-  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:5637 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5639 */
-  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, 5639);
-  }
-  /* parser/parser.nit:5640 */
-  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:5641 */
-  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:5648 */
-  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, 5648);
-  }
-  /* parser/parser.nit:5650 */
-  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, 5650);
-  }
-  /* parser/parser.nit:5651 */
-  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:5653 */
-  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, 5653);
-  }
-  /* parser/parser.nit:5654 */
-  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:5667 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5668 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5668);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5673;
-  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:5675 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5676 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5677 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5678 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5679 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5680 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5681 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5682 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5683 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5684 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5685 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5686 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5688 */
-  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, 5688);
-  }
-  /* parser/parser.nit:5690 */
-  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, 5690);
-  }
-  /* parser/parser.nit:5692 */
-  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, 5692);
-  }
-  /* parser/parser.nit:5694 */
-  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, 5694);
-  }
-  /* parser/parser.nit:5696 */
-  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, 5696);
-  }
-  /* parser/parser.nit:5697 */
-  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:5699 */
-  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, 5699);
-  }
-  /* parser/parser.nit:5700 */
-  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:5713 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5714 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5714);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5719;
-  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:5721 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5722 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5723 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5724 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5725 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5726 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5727 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5728 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5729 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5730 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5731 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5732 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5733 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5735 */
-  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, 5735);
-  }
-  /* parser/parser.nit:5737 */
-  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, 5737);
-  }
-  /* parser/parser.nit:5739 */
-  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, 5739);
-  }
-  /* parser/parser.nit:5741 */
-  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, 5741);
-  }
-  /* parser/parser.nit:5743 */
-  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, 5743);
-  }
-  /* parser/parser.nit:5745 */
-  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, 5745);
-  }
-  /* parser/parser.nit:5746 */
-  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:5748 */
-  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, 5748);
-  }
-  /* parser/parser.nit:5749 */
-  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:5762 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5763 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5763);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5768;
-  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:5770 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5771 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5772 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5773 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5774 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5775 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5776 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5777 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5778 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5779 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5780 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5781 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5782 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5784 */
-  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, 5784);
-  }
-  /* parser/parser.nit:5786 */
-  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, 5786);
-  }
-  /* parser/parser.nit:5788 */
-  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, 5788);
-  }
-  /* parser/parser.nit:5790 */
-  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, 5790);
-  }
-  /* parser/parser.nit:5792 */
-  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, 5792);
-  }
-  /* parser/parser.nit:5793 */
-  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:5795 */
-  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, 5795);
-  }
-  /* parser/parser.nit:5796 */
-  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:5798 */
-  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, 5798);
-  }
-  /* parser/parser.nit:5799 */
-  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:5812 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5813 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5813);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5818;
-  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:5820 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5821 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5822 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5823 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5824 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5825 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5826 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5827 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5828 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5829 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5830 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5831 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5832 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5833 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5835 */
-  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, 5835);
-  }
-  /* parser/parser.nit:5837 */
-  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, 5837);
-  }
-  /* parser/parser.nit:5839 */
-  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, 5839);
-  }
-  /* parser/parser.nit:5841 */
-  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, 5841);
-  }
-  /* parser/parser.nit:5843 */
-  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, 5843);
-  }
-  /* parser/parser.nit:5845 */
-  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, 5845);
-  }
-  /* parser/parser.nit:5846 */
-  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:5848 */
-  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, 5848);
-  }
-  /* parser/parser.nit:5849 */
-  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:5851 */
-  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, 5851);
-  }
-  /* parser/parser.nit:5852 */
-  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:5865 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5866 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5866);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5871;
-  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:5873 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5874 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5875 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5876 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5877 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5878 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5879 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5880 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5881 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5882 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5883 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5884 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5885 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5887 */
-  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, 5887);
-  }
-  /* parser/parser.nit:5889 */
-  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, 5889);
-  }
-  /* parser/parser.nit:5891 */
-  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, 5891);
-  }
-  /* parser/parser.nit:5893 */
-  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, 5893);
-  }
-  /* parser/parser.nit:5894 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5896 */
-  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, 5896);
-  }
-  /* parser/parser.nit:5897 */
-  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:5898 */
-  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:5905 */
-  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, 5905);
-  }
-  /* parser/parser.nit:5906 */
-  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:5908 */
-  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, 5908);
-  }
-  /* parser/parser.nit:5909 */
-  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:5922 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5923 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5923);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5928;
-  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:5930 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5931 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5932 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5933 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5934 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5935 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5936 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5937 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5938 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5939 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5940 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5941 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5942 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5943 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5945 */
-  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, 5945);
-  }
-  /* parser/parser.nit:5947 */
-  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, 5947);
-  }
-  /* parser/parser.nit:5949 */
-  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, 5949);
-  }
-  /* parser/parser.nit:5951 */
-  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, 5951);
-  }
-  /* parser/parser.nit:5953 */
-  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, 5953);
-  }
-  /* parser/parser.nit:5954 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:5956 */
-  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, 5956);
-  }
-  /* parser/parser.nit:5957 */
-  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:5958 */
-  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:5965 */
-  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, 5965);
-  }
-  /* parser/parser.nit:5966 */
-  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:5968 */
-  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, 5968);
-  }
-  /* parser/parser.nit:5969 */
-  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:5982 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:5983 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5983);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 5988;
-  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:5990 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:5991 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5992 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5993 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5994 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5995 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5996 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5997 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5998 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:5999 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6000 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6001 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6002 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6003 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6005 */
-  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, 6005);
-  }
-  /* parser/parser.nit:6007 */
-  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, 6007);
-  }
-  /* parser/parser.nit:6009 */
-  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, 6009);
-  }
-  /* parser/parser.nit:6011 */
-  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, 6011);
-  }
-  /* parser/parser.nit:6013 */
-  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, 6013);
-  }
-  /* parser/parser.nit:6014 */
-  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:6015 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6017 */
-  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, 6017);
-  }
-  /* parser/parser.nit:6018 */
-  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:6019 */
-  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:6026 */
-  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, 6026);
-  }
-  /* parser/parser.nit:6027 */
-  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:6029 */
-  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, 6029);
-  }
-  /* parser/parser.nit:6030 */
-  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:6043 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6044 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6044);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6049;
-  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:6051 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6052 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6053 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6054 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6055 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6056 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6057 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6058 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6059 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6060 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6061 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6062 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6063 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6064 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6065 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6067 */
-  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, 6067);
-  }
-  /* parser/parser.nit:6069 */
-  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, 6069);
-  }
-  /* parser/parser.nit:6071 */
-  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, 6071);
-  }
-  /* parser/parser.nit:6073 */
-  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, 6073);
-  }
-  /* parser/parser.nit:6075 */
-  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, 6075);
-  }
-  /* parser/parser.nit:6077 */
-  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, 6077);
-  }
-  /* parser/parser.nit:6078 */
-  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:6079 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6081 */
-  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, 6081);
-  }
-  /* parser/parser.nit:6082 */
-  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:6083 */
-  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:6090 */
-  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, 6090);
-  }
-  /* parser/parser.nit:6091 */
-  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:6093 */
-  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, 6093);
-  }
-  /* parser/parser.nit:6094 */
-  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:6107 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6108 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6108);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6113;
-  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:6115 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6116 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6117 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6118 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6119 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6120 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6121 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6122 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6123 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6124 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6125 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6126 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6127 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6129 */
-  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, 6129);
-  }
-  /* parser/parser.nit:6131 */
-  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, 6131);
-  }
-  /* parser/parser.nit:6133 */
-  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, 6133);
-  }
-  /* parser/parser.nit:6135 */
-  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, 6135);
-  }
-  /* parser/parser.nit:6137 */
-  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, 6137);
-  }
-  /* parser/parser.nit:6139 */
-  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, 6139);
-  }
-  /* parser/parser.nit:6140 */
-  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:6142 */
-  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, 6142);
-  }
-  /* parser/parser.nit:6143 */
-  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:6156 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6157 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6157);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6162;
-  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:6164 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6165 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6166 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6167 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6168 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6169 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6170 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6171 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6172 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6173 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6174 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6175 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6176 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6177 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6179 */
-  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, 6179);
-  }
-  /* parser/parser.nit:6181 */
-  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, 6181);
-  }
-  /* parser/parser.nit:6183 */
-  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, 6183);
-  }
-  /* parser/parser.nit:6185 */
-  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, 6185);
-  }
-  /* parser/parser.nit:6187 */
-  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, 6187);
-  }
-  /* parser/parser.nit:6189 */
-  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, 6189);
-  }
-  /* parser/parser.nit:6191 */
-  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, 6191);
-  }
-  /* parser/parser.nit:6192 */
-  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:6194 */
-  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, 6194);
-  }
-  /* parser/parser.nit:6195 */
-  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:6208 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6209 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6209);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6214;
-  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:6216 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6217 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6218 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6219 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6220 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6221 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6222 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6223 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6224 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6225 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6226 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6227 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6228 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6229 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6231 */
-  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, 6231);
-  }
-  /* parser/parser.nit:6233 */
-  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, 6233);
-  }
-  /* parser/parser.nit:6235 */
-  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, 6235);
-  }
-  /* parser/parser.nit:6237 */
-  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, 6237);
-  }
-  /* parser/parser.nit:6239 */
-  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, 6239);
-  }
-  /* parser/parser.nit:6240 */
-  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:6242 */
-  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, 6242);
-  }
-  /* parser/parser.nit:6244 */
-  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, 6244);
-  }
-  /* parser/parser.nit:6245 */
-  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:6247 */
-  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, 6247);
-  }
-  /* parser/parser.nit:6248 */
-  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:6261 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6262 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6262);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6267;
-  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:6269 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6270 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6271 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6272 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6273 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6274 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6275 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6276 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6277 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6278 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6279 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6280 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6281 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6282 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6283 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6285 */
-  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, 6285);
-  }
-  /* parser/parser.nit:6287 */
-  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, 6287);
-  }
-  /* parser/parser.nit:6289 */
-  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, 6289);
-  }
-  /* parser/parser.nit:6291 */
-  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, 6291);
-  }
-  /* parser/parser.nit:6293 */
-  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, 6293);
-  }
-  /* parser/parser.nit:6295 */
-  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, 6295);
-  }
-  /* parser/parser.nit:6296 */
-  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:6298 */
-  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, 6298);
-  }
-  /* parser/parser.nit:6300 */
-  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, 6300);
-  }
-  /* parser/parser.nit:6301 */
-  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:6303 */
-  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, 6303);
-  }
-  /* parser/parser.nit:6304 */
-  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:6317 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6318 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6318);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6323;
-  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:6325 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6326 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6327 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6328 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6329 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6330 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6331 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6332 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6333 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6334 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6335 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6336 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6337 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6338 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6340 */
-  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, 6340);
-  }
-  /* parser/parser.nit:6342 */
-  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, 6342);
-  }
-  /* parser/parser.nit:6344 */
-  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, 6344);
-  }
-  /* parser/parser.nit:6346 */
-  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, 6346);
-  }
-  /* parser/parser.nit:6347 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6349 */
-  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, 6349);
-  }
-  /* parser/parser.nit:6350 */
-  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:6351 */
-  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:6358 */
-  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, 6358);
-  }
-  /* parser/parser.nit:6360 */
-  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, 6360);
-  }
-  /* parser/parser.nit:6361 */
-  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:6363 */
-  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, 6363);
-  }
-  /* parser/parser.nit:6364 */
-  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:6377 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6378 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6378);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6383;
-  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:6385 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6386 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6387 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6388 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6389 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6390 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6391 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6392 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6393 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6394 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6395 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6396 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6397 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6398 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6399 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6401 */
-  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, 6401);
-  }
-  /* parser/parser.nit:6403 */
-  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, 6403);
-  }
-  /* parser/parser.nit:6405 */
-  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, 6405);
-  }
-  /* parser/parser.nit:6407 */
-  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, 6407);
-  }
-  /* parser/parser.nit:6409 */
-  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, 6409);
-  }
-  /* parser/parser.nit:6410 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6412 */
-  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, 6412);
-  }
-  /* parser/parser.nit:6413 */
-  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:6414 */
-  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:6421 */
-  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, 6421);
-  }
-  /* parser/parser.nit:6423 */
-  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, 6423);
-  }
-  /* parser/parser.nit:6424 */
-  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:6426 */
-  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, 6426);
-  }
-  /* parser/parser.nit:6427 */
-  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:6440 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6441 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6441);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6446;
-  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:6448 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6449 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6450 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6451 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6452 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6453 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6454 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6455 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6456 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6457 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6458 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6459 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6460 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6461 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6462 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6464 */
-  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, 6464);
-  }
-  /* parser/parser.nit:6466 */
-  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, 6466);
-  }
-  /* parser/parser.nit:6468 */
-  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, 6468);
-  }
-  /* parser/parser.nit:6470 */
-  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, 6470);
-  }
-  /* parser/parser.nit:6472 */
-  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, 6472);
-  }
-  /* parser/parser.nit:6473 */
-  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:6474 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6476 */
-  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, 6476);
-  }
-  /* parser/parser.nit:6477 */
-  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:6478 */
-  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:6485 */
-  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, 6485);
-  }
-  /* parser/parser.nit:6487 */
-  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, 6487);
-  }
-  /* parser/parser.nit:6488 */
-  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:6490 */
-  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, 6490);
-  }
-  /* parser/parser.nit:6491 */
-  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:6504 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6505 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6505);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6510;
-  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:6512 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6513 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6514 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6515 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6516 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6517 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6518 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6519 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6520 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6521 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6522 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6523 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6524 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6525 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6526 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6527 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6529 */
-  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, 6529);
-  }
-  /* parser/parser.nit:6531 */
-  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, 6531);
-  }
-  /* parser/parser.nit:6533 */
-  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, 6533);
-  }
-  /* parser/parser.nit:6535 */
-  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, 6535);
-  }
-  /* parser/parser.nit:6537 */
-  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, 6537);
-  }
-  /* parser/parser.nit:6539 */
-  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, 6539);
-  }
-  /* parser/parser.nit:6540 */
-  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:6541 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6543 */
-  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, 6543);
-  }
-  /* parser/parser.nit:6544 */
-  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:6545 */
-  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:6552 */
-  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, 6552);
-  }
-  /* parser/parser.nit:6554 */
-  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, 6554);
-  }
-  /* parser/parser.nit:6555 */
-  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:6557 */
-  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, 6557);
-  }
-  /* parser/parser.nit:6558 */
-  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:6571 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6572 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6572);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6577;
-  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:6579 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6580 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6581 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6582 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6583 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6584 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6585 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6586 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6587 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6588 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6589 */
-  fra.me.REG[10] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6590 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6591 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6593 */
-  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, 6593);
-  }
-  /* parser/parser.nit:6595 */
-  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, 6595);
-  }
-  /* parser/parser.nit:6597 */
-  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, 6597);
-  }
-  /* parser/parser.nit:6599 */
-  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, 6599);
-  }
-  /* parser/parser.nit:6601 */
-  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, 6601);
-  }
-  /* parser/parser.nit:6602 */
-  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:6604 */
-  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, 6604);
-  }
-  /* parser/parser.nit:6605 */
-  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:6607 */
-  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, 6607);
-  }
-  /* parser/parser.nit:6608 */
-  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:6621 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6622 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6622);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6627;
-  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:6629 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6630 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6631 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6632 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6633 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6634 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6635 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6636 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6637 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6638 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6639 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6640 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6641 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6642 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6644 */
-  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, 6644);
-  }
-  /* parser/parser.nit:6646 */
-  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, 6646);
-  }
-  /* parser/parser.nit:6648 */
-  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, 6648);
-  }
-  /* parser/parser.nit:6650 */
-  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, 6650);
-  }
-  /* parser/parser.nit:6652 */
-  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, 6652);
-  }
-  /* parser/parser.nit:6654 */
-  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, 6654);
-  }
-  /* parser/parser.nit:6655 */
-  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:6657 */
-  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, 6657);
-  }
-  /* parser/parser.nit:6658 */
-  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:6660 */
-  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, 6660);
-  }
-  /* parser/parser.nit:6661 */
-  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:6674 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6675 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6675);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6680;
-  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:6682 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6683 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6684 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6685 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6686 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6687 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6688 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6689 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6690 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6691 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6692 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6693 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6694 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6695 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6697 */
-  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, 6697);
-  }
-  /* parser/parser.nit:6699 */
-  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, 6699);
-  }
-  /* parser/parser.nit:6701 */
-  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, 6701);
-  }
-  /* parser/parser.nit:6703 */
-  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, 6703);
-  }
-  /* parser/parser.nit:6705 */
-  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, 6705);
-  }
-  /* parser/parser.nit:6706 */
-  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:6708 */
-  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, 6708);
-  }
-  /* parser/parser.nit:6709 */
-  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:6711 */
-  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, 6711);
-  }
-  /* parser/parser.nit:6712 */
-  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:6714 */
-  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, 6714);
-  }
-  /* parser/parser.nit:6715 */
-  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:6728 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6729 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6729);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6734;
-  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:6736 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6737 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6738 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6739 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6740 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6741 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6742 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6743 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6744 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6745 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6746 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6747 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6748 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6749 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6750 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6752 */
-  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, 6752);
-  }
-  /* parser/parser.nit:6754 */
-  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, 6754);
-  }
-  /* parser/parser.nit:6756 */
-  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, 6756);
-  }
-  /* parser/parser.nit:6758 */
-  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, 6758);
-  }
-  /* parser/parser.nit:6760 */
-  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, 6760);
-  }
-  /* parser/parser.nit:6762 */
-  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, 6762);
-  }
-  /* parser/parser.nit:6763 */
-  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:6765 */
-  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, 6765);
-  }
-  /* parser/parser.nit:6766 */
-  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:6768 */
-  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, 6768);
-  }
-  /* parser/parser.nit:6769 */
-  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:6771 */
-  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, 6771);
-  }
-  /* parser/parser.nit:6772 */
-  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:6785 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6786 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6786);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6791;
-  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:6793 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6794 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6795 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6796 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6797 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6798 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6799 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6800 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6801 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6802 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6803 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6804 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6805 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6806 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6808 */
-  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, 6808);
-  }
-  /* parser/parser.nit:6810 */
-  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, 6810);
-  }
-  /* parser/parser.nit:6812 */
-  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, 6812);
-  }
-  /* parser/parser.nit:6814 */
-  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, 6814);
-  }
-  /* parser/parser.nit:6815 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6817 */
-  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, 6817);
-  }
-  /* parser/parser.nit:6818 */
-  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:6819 */
-  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:6826 */
-  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, 6826);
-  }
-  /* parser/parser.nit:6827 */
-  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:6829 */
-  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, 6829);
-  }
-  /* parser/parser.nit:6830 */
-  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:6832 */
-  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, 6832);
-  }
-  /* parser/parser.nit:6833 */
-  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:6846 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6847 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6847);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6852;
-  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:6854 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6855 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6856 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6857 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6858 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6859 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6860 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6861 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6862 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6863 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6864 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6865 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6866 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6867 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6868 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6870 */
-  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, 6870);
-  }
-  /* parser/parser.nit:6872 */
-  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, 6872);
-  }
-  /* parser/parser.nit:6874 */
-  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, 6874);
-  }
-  /* parser/parser.nit:6876 */
-  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, 6876);
-  }
-  /* parser/parser.nit:6878 */
-  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, 6878);
-  }
-  /* parser/parser.nit:6879 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6881 */
-  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, 6881);
-  }
-  /* parser/parser.nit:6882 */
-  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:6883 */
-  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:6890 */
-  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, 6890);
-  }
-  /* parser/parser.nit:6891 */
-  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:6893 */
-  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, 6893);
-  }
-  /* parser/parser.nit:6894 */
-  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:6896 */
-  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, 6896);
-  }
-  /* parser/parser.nit:6897 */
-  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:6910 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6911 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6911);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6916;
-  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:6918 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6919 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6920 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6921 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6922 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6923 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6924 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6925 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6926 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6927 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6928 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6929 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6930 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6931 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6932 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6934 */
-  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, 6934);
-  }
-  /* parser/parser.nit:6936 */
-  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, 6936);
-  }
-  /* parser/parser.nit:6938 */
-  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, 6938);
-  }
-  /* parser/parser.nit:6940 */
-  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, 6940);
-  }
-  /* parser/parser.nit:6942 */
-  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, 6942);
-  }
-  /* parser/parser.nit:6943 */
-  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:6944 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6946 */
-  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, 6946);
-  }
-  /* parser/parser.nit:6947 */
-  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:6948 */
-  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:6955 */
-  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, 6955);
-  }
-  /* parser/parser.nit:6956 */
-  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:6958 */
-  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, 6958);
-  }
-  /* parser/parser.nit:6959 */
-  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:6961 */
-  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, 6961);
-  }
-  /* parser/parser.nit:6962 */
-  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:6975 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:6976 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6976);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 6981;
-  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:6983 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:6984 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6985 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6986 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6987 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6988 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6989 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6990 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6991 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6992 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6993 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6994 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6995 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:6996 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6997 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:6998 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7000 */
-  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, 7000);
-  }
-  /* parser/parser.nit:7002 */
-  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, 7002);
-  }
-  /* parser/parser.nit:7004 */
-  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, 7004);
-  }
-  /* parser/parser.nit:7006 */
-  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, 7006);
-  }
-  /* parser/parser.nit:7008 */
-  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, 7008);
-  }
-  /* parser/parser.nit:7010 */
-  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, 7010);
-  }
-  /* parser/parser.nit:7011 */
-  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:7012 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7014 */
-  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, 7014);
-  }
-  /* parser/parser.nit:7015 */
-  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:7016 */
-  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:7023 */
-  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, 7023);
-  }
-  /* parser/parser.nit:7024 */
-  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:7026 */
-  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, 7026);
-  }
-  /* parser/parser.nit:7027 */
-  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:7029 */
-  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, 7029);
-  }
-  /* parser/parser.nit:7030 */
-  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:7043 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7044 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7044);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7049;
-  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:7051 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7052 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7053 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7054 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7055 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7056 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7057 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7058 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7059 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7060 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7061 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7062 */
-  fra.me.REG[11] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7063 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7064 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7066 */
-  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, 7066);
-  }
-  /* parser/parser.nit:7068 */
-  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, 7068);
-  }
-  /* parser/parser.nit:7070 */
-  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, 7070);
-  }
-  /* parser/parser.nit:7072 */
-  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, 7072);
-  }
-  /* parser/parser.nit:7074 */
-  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, 7074);
-  }
-  /* parser/parser.nit:7076 */
-  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, 7076);
-  }
-  /* parser/parser.nit:7077 */
-  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:7079 */
-  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, 7079);
-  }
-  /* parser/parser.nit:7080 */
-  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:7082 */
-  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, 7082);
-  }
-  /* parser/parser.nit:7083 */
-  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:7096 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7097 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7097);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7102;
-  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:7104 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7105 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7106 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7107 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7108 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7109 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7110 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7111 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7112 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7113 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7114 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7115 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7116 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7117 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7118 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7120 */
-  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, 7120);
-  }
-  /* parser/parser.nit:7122 */
-  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, 7122);
-  }
-  /* parser/parser.nit:7124 */
-  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, 7124);
-  }
-  /* parser/parser.nit:7126 */
-  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, 7126);
-  }
-  /* parser/parser.nit:7128 */
-  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, 7128);
-  }
-  /* parser/parser.nit:7130 */
-  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, 7130);
-  }
-  /* parser/parser.nit:7132 */
-  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, 7132);
-  }
-  /* parser/parser.nit:7133 */
-  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:7135 */
-  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, 7135);
-  }
-  /* parser/parser.nit:7136 */
-  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:7138 */
-  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, 7138);
-  }
-  /* parser/parser.nit:7139 */
-  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:7152 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7153 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7153);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7158;
-  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:7160 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7161 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7162 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7163 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7164 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7165 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7166 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7167 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7168 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7169 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7170 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7171 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7172 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7173 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7174 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7176 */
-  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, 7176);
-  }
-  /* parser/parser.nit:7178 */
-  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, 7178);
-  }
-  /* parser/parser.nit:7180 */
-  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, 7180);
-  }
-  /* parser/parser.nit:7182 */
-  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, 7182);
-  }
-  /* parser/parser.nit:7184 */
-  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, 7184);
-  }
-  /* parser/parser.nit:7185 */
-  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:7187 */
-  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, 7187);
-  }
-  /* parser/parser.nit:7189 */
-  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, 7189);
-  }
-  /* parser/parser.nit:7190 */
-  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:7192 */
-  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, 7192);
-  }
-  /* parser/parser.nit:7193 */
-  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:7195 */
-  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, 7195);
-  }
-  /* parser/parser.nit:7196 */
-  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:7209 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7210 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7210);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7215;
-  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:7217 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7218 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7219 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7220 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7221 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7222 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7223 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7224 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7225 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7226 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7227 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7228 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7229 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7230 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7231 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7232 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7234 */
-  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, 7234);
-  }
-  /* parser/parser.nit:7236 */
-  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, 7236);
-  }
-  /* parser/parser.nit:7238 */
-  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, 7238);
-  }
-  /* parser/parser.nit:7240 */
-  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, 7240);
-  }
-  /* parser/parser.nit:7242 */
-  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, 7242);
-  }
-  /* parser/parser.nit:7244 */
-  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, 7244);
-  }
-  /* parser/parser.nit:7245 */
-  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:7247 */
-  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, 7247);
-  }
-  /* parser/parser.nit:7249 */
-  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, 7249);
-  }
-  /* parser/parser.nit:7250 */
-  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:7252 */
-  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, 7252);
-  }
-  /* parser/parser.nit:7253 */
-  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:7255 */
-  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, 7255);
-  }
-  /* parser/parser.nit:7256 */
-  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:7269 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7270 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7270);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7275;
-  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:7277 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7278 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7279 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7280 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7281 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7282 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7283 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7284 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7285 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7286 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7287 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7288 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7289 */
-  fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7290 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7291 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7293 */
-  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, 7293);
-  }
-  /* parser/parser.nit:7295 */
-  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, 7295);
-  }
-  /* parser/parser.nit:7297 */
-  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, 7297);
-  }
-  /* parser/parser.nit:7299 */
-  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, 7299);
-  }
-  /* parser/parser.nit:7300 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7302 */
-  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, 7302);
-  }
-  /* parser/parser.nit:7303 */
-  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:7304 */
-  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:7311 */
-  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, 7311);
-  }
-  /* parser/parser.nit:7313 */
-  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, 7313);
-  }
-  /* parser/parser.nit:7314 */
-  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:7316 */
-  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, 7316);
-  }
-  /* parser/parser.nit:7317 */
-  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:7319 */
-  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, 7319);
-  }
-  /* parser/parser.nit:7320 */
-  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:7333 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7334 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7334);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7339;
-  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:7341 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7342 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7343 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7344 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7345 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7346 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7347 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7348 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7349 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7350 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7351 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7352 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7353 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7354 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7355 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7356 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7358 */
-  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, 7358);
-  }
-  /* parser/parser.nit:7360 */
-  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, 7360);
-  }
-  /* parser/parser.nit:7362 */
-  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, 7362);
-  }
-  /* parser/parser.nit:7364 */
-  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, 7364);
-  }
-  /* parser/parser.nit:7366 */
-  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, 7366);
-  }
-  /* parser/parser.nit:7367 */
-  fra.me.REG[16] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7369 */
-  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, 7369);
-  }
-  /* parser/parser.nit:7370 */
-  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:7371 */
-  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:7378 */
-  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, 7378);
-  }
-  /* parser/parser.nit:7380 */
-  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, 7380);
-  }
-  /* parser/parser.nit:7381 */
-  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:7383 */
-  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, 7383);
-  }
-  /* parser/parser.nit:7384 */
-  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:7386 */
-  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, 7386);
-  }
-  /* parser/parser.nit:7387 */
-  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:7400 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7401 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7401);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7406;
-  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:7408 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7409 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7410 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7411 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7412 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7413 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7414 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7415 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7416 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7417 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7418 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7419 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7420 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7421 */
-  fra.me.REG[13] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7422 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7423 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7425 */
-  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, 7425);
-  }
-  /* parser/parser.nit:7427 */
-  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, 7427);
-  }
-  /* parser/parser.nit:7429 */
-  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, 7429);
-  }
-  /* parser/parser.nit:7431 */
-  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, 7431);
-  }
-  /* parser/parser.nit:7433 */
-  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, 7433);
-  }
-  /* parser/parser.nit:7434 */
-  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:7435 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7437 */
-  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, 7437);
-  }
-  /* parser/parser.nit:7438 */
-  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:7439 */
-  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:7446 */
-  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, 7446);
-  }
-  /* parser/parser.nit:7448 */
-  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, 7448);
-  }
-  /* parser/parser.nit:7449 */
-  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:7451 */
-  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, 7451);
-  }
-  /* parser/parser.nit:7452 */
-  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:7454 */
-  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, 7454);
-  }
-  /* parser/parser.nit:7455 */
-  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:7468 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7469 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7469);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7474;
-  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:7476 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7477 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7478 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7479 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7480 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7481 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7482 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7483 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7484 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7485 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7486 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7487 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7488 */
-  fra.me.REG[12] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7489 */
-  fra.me.REG[13] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7490 */
-  fra.me.REG[14] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7491 */
-  fra.me.REG[15] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7492 */
-  fra.me.REG[16] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7494 */
-  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, 7494);
-  }
-  /* parser/parser.nit:7496 */
-  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, 7496);
-  }
-  /* parser/parser.nit:7498 */
-  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, 7498);
-  }
-  /* parser/parser.nit:7500 */
-  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, 7500);
-  }
-  /* parser/parser.nit:7502 */
-  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, 7502);
-  }
-  /* parser/parser.nit:7504 */
-  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, 7504);
-  }
-  /* parser/parser.nit:7505 */
-  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:7506 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7508 */
-  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, 7508);
-  }
-  /* parser/parser.nit:7509 */
-  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:7510 */
-  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:7517 */
-  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, 7517);
-  }
-  /* parser/parser.nit:7519 */
-  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, 7519);
-  }
-  /* parser/parser.nit:7520 */
-  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:7522 */
-  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, 7522);
-  }
-  /* parser/parser.nit:7523 */
-  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:7525 */
-  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, 7525);
-  }
-  /* parser/parser.nit:7526 */
-  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:7539 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7540 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7540);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7545;
-  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:7547 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7548 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7550 */
-  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, 7550);
-  }
-  /* parser/parser.nit:7551 */
-  fra.me.REG[3] = NEW_AConcreteClasskind_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[3]);
-  /* parser/parser.nit:7554 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7555 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7555);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7560;
-  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:7562 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7563 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7564 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7566 */
-  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, 7566);
-  }
-  /* parser/parser.nit:7568 */
-  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, 7568);
-  }
-  /* parser/parser.nit:7569 */
-  fra.me.REG[3] = NEW_AAbstractClasskind_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7573 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7574 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7574);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7579;
-  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:7581 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7582 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7584 */
-  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, 7584);
-  }
-  /* parser/parser.nit:7585 */
-  fra.me.REG[3] = NEW_AInterfaceClasskind_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[3]);
-  /* parser/parser.nit:7588 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7589 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7589);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7594;
-  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:7596 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7597 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7599 */
-  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, 7599);
-  }
-  /* parser/parser.nit:7600 */
-  fra.me.REG[3] = NEW_AEnumClasskind_parser___parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[3]);
-  /* parser/parser.nit:7603 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7604 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7604);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7609;
-  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:7611 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7612 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7614 */
-  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, 7614);
-  }
-  /* parser/parser.nit:7615 */
-  fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:7619 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7620 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7620);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7625;
-  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:7627 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7628 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7629 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7631 */
-  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, 7631);
-  }
-  /* parser/parser.nit:7633 */
-  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, 7633);
-  }
-  /* parser/parser.nit:7634 */
-  fra.me.REG[3] = NEW_AExternClasskind_parser___parser_prod___AExternClasskind___init_aexternclasskind(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:7638 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7639 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7639);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7644;
-  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:7646 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7647 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7648 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7651 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7652 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7654 */
-  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:7655 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:7657 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:7658 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7658);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7663;
-  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:7665 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7666 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7667 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7670 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7671 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7672 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:7675 */
-  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, 7675);
-  }
-  /* parser/parser.nit:7676 */
-  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:7677 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:7679 */
-  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:7680 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:7681 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7681);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7686;
-  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:7688 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7689 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7690 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7691 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7693 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7694 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7694);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7699;
-  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:7701 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7702 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7704 */
-  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, 7704);
-  }
-  /* parser/parser.nit:7705 */
-  fra.me.REG[3] = NEW_AFormaldef_parser___parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:7710 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7711 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7711);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7716;
-  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:7718 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7719 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7720 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7722 */
-  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, 7722);
-  }
-  /* parser/parser.nit:7724 */
-  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, 7724);
-  }
-  /* parser/parser.nit:7725 */
-  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:7730 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7731 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7731);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7736;
-  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:7738 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7739 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7740 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7742 */
-  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, 7742);
-  }
-  /* parser/parser.nit:7744 */
-  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, 7744);
-  }
-  /* parser/parser.nit:7745 */
-  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:7750 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7751 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7751);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7756;
-  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:7758 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7759 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7760 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7761 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7763 */
-  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, 7763);
-  }
-  /* parser/parser.nit:7765 */
-  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, 7765);
-  }
-  /* parser/parser.nit:7767 */
-  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, 7767);
-  }
-  /* parser/parser.nit:7768 */
-  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:7773 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:7774 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7774);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7779;
-  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:7781 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7782 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7783 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7784 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7785 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7787 */
-  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, 7787);
-  }
-  /* parser/parser.nit:7789 */
-  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, 7789);
-  }
-  /* parser/parser.nit:7790 */
-  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:7795 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7796 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7796);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7801;
-  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:7803 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7804 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7805 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7806 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7807 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7808 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7810 */
-  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, 7810);
-  }
-  /* parser/parser.nit:7812 */
-  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, 7812);
-  }
-  /* parser/parser.nit:7814 */
-  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, 7814);
-  }
-  /* parser/parser.nit:7815 */
-  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:7820 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7821 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7821);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 7826;
-  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:7828 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7829 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7830 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7832 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7833 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7833);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7838;
-  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:7840 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7841 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7842 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7843 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7844 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7845 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7846 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7847 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7849 */
-  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, 7849);
-  }
-  /* parser/parser.nit:7851 */
-  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, 7851);
-  }
-  /* parser/parser.nit:7853 */
-  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, 7853);
-  }
-  /* parser/parser.nit:7855 */
-  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, 7855);
-  }
-  /* parser/parser.nit:7857 */
-  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, 7857);
-  }
-  /* parser/parser.nit:7859 */
-  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, 7859);
-  }
-  /* parser/parser.nit:7860 */
-  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:7870 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7871 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7871);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7876;
-  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:7878 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7879 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7880 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7881 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7882 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7883 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7884 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7885 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7886 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7888 */
-  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, 7888);
-  }
-  /* parser/parser.nit:7890 */
-  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, 7890);
-  }
-  /* parser/parser.nit:7892 */
-  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, 7892);
-  }
-  /* parser/parser.nit:7894 */
-  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, 7894);
-  }
-  /* parser/parser.nit:7896 */
-  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, 7896);
-  }
-  /* parser/parser.nit:7898 */
-  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, 7898);
-  }
-  /* parser/parser.nit:7900 */
-  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, 7900);
-  }
-  /* parser/parser.nit:7901 */
-  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:7911 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7912 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7912);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7917;
-  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:7919 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7920 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7921 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7922 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7923 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7924 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7925 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7926 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7927 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7929 */
-  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, 7929);
-  }
-  /* parser/parser.nit:7931 */
-  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, 7931);
-  }
-  /* parser/parser.nit:7933 */
-  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, 7933);
-  }
-  /* parser/parser.nit:7935 */
-  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, 7935);
-  }
-  /* parser/parser.nit:7937 */
-  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, 7937);
-  }
-  /* parser/parser.nit:7939 */
-  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, 7939);
-  }
-  /* parser/parser.nit:7941 */
-  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, 7941);
-  }
-  /* parser/parser.nit:7942 */
-  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:7952 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7953 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7953);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 7958;
-  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:7960 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:7961 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7962 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7963 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7964 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7965 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7966 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7967 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7968 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7969 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:7971 */
-  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, 7971);
-  }
-  /* parser/parser.nit:7973 */
-  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, 7973);
-  }
-  /* parser/parser.nit:7975 */
-  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, 7975);
-  }
-  /* parser/parser.nit:7977 */
-  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, 7977);
-  }
-  /* parser/parser.nit:7979 */
-  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, 7979);
-  }
-  /* parser/parser.nit:7981 */
-  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, 7981);
-  }
-  /* parser/parser.nit:7983 */
-  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, 7983);
-  }
-  /* parser/parser.nit:7985 */
-  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, 7985);
-  }
-  /* parser/parser.nit:7986 */
-  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:7996 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:7997 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7997);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8002;
-  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:8004 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8005 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8006 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8007 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8008 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8009 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8010 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8011 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8012 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8014 */
-  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, 8014);
-  }
-  /* parser/parser.nit:8016 */
-  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, 8016);
-  }
-  /* parser/parser.nit:8018 */
-  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, 8018);
-  }
-  /* parser/parser.nit:8020 */
-  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, 8020);
-  }
-  /* parser/parser.nit:8022 */
-  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, 8022);
-  }
-  /* parser/parser.nit:8024 */
-  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, 8024);
-  }
-  /* parser/parser.nit:8025 */
-  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:8035 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8036 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8036);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8041;
-  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:8043 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8044 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8045 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8046 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8047 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8048 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8049 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8050 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8051 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8052 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8054 */
-  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, 8054);
-  }
-  /* parser/parser.nit:8056 */
-  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, 8056);
-  }
-  /* parser/parser.nit:8058 */
-  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, 8058);
-  }
-  /* parser/parser.nit:8060 */
-  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, 8060);
-  }
-  /* parser/parser.nit:8062 */
-  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, 8062);
-  }
-  /* parser/parser.nit:8064 */
-  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, 8064);
-  }
-  /* parser/parser.nit:8066 */
-  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, 8066);
-  }
-  /* parser/parser.nit:8067 */
-  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:8077 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8078 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8078);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8083;
-  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:8085 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8086 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8087 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8088 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8089 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8090 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8091 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8092 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8093 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8094 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8096 */
-  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, 8096);
-  }
-  /* parser/parser.nit:8098 */
-  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, 8098);
-  }
-  /* parser/parser.nit:8100 */
-  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, 8100);
-  }
-  /* parser/parser.nit:8102 */
-  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, 8102);
-  }
-  /* parser/parser.nit:8104 */
-  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, 8104);
-  }
-  /* parser/parser.nit:8106 */
-  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, 8106);
-  }
-  /* parser/parser.nit:8108 */
-  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, 8108);
-  }
-  /* parser/parser.nit:8109 */
-  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:8119 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8120 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8120);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8125;
-  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:8127 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8128 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8129 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8130 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8131 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8132 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8133 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8134 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8135 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8136 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8137 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8139 */
-  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, 8139);
-  }
-  /* parser/parser.nit:8141 */
-  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, 8141);
-  }
-  /* parser/parser.nit:8143 */
-  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, 8143);
-  }
-  /* parser/parser.nit:8145 */
-  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, 8145);
-  }
-  /* parser/parser.nit:8147 */
-  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, 8147);
-  }
-  /* parser/parser.nit:8149 */
-  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, 8149);
-  }
-  /* parser/parser.nit:8151 */
-  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, 8151);
-  }
-  /* parser/parser.nit:8153 */
-  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, 8153);
-  }
-  /* parser/parser.nit:8154 */
-  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:8164 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8165 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8165);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8170;
-  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:8172 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8173 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8174 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8175 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8178 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8179 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8180 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8182 */
-  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, 8182);
-  }
-  /* parser/parser.nit:8184 */
-  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, 8184);
-  }
-  /* parser/parser.nit:8186 */
-  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, 8186);
-  }
-  /* parser/parser.nit:8188 */
-  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, 8188);
-  }
-  /* parser/parser.nit:8190 */
-  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, 8190);
-  }
-  /* parser/parser.nit:8192 */
-  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, 8192);
-  }
-  /* parser/parser.nit:8193 */
-  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:8203 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8204 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8204);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8209;
-  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:8211 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8212 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8213 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8214 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8217 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8218 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8219 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8220 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8222 */
-  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, 8222);
-  }
-  /* parser/parser.nit:8224 */
-  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, 8224);
-  }
-  /* parser/parser.nit:8226 */
-  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, 8226);
-  }
-  /* parser/parser.nit:8228 */
-  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, 8228);
-  }
-  /* parser/parser.nit:8230 */
-  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, 8230);
-  }
-  /* parser/parser.nit:8232 */
-  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, 8232);
-  }
-  /* parser/parser.nit:8234 */
-  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, 8234);
-  }
-  /* parser/parser.nit:8235 */
-  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:8245 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8246 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8246);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8251;
-  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:8253 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8254 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8255 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8256 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8257 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8258 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8259 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8261 */
-  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, 8261);
-  }
-  /* parser/parser.nit:8263 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_parser___parser_nodes___AVisibility, ID_parser___parser_nodes___AVisibility)) /*cast nullable AVisibility*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8263);
-  }
-  /* parser/parser.nit:8265 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___TKwmeth, ID_parser___parser_nodes___TKwmeth)) /*cast nullable TKwmeth*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8265);
-  }
-  /* parser/parser.nit:8267 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_parser___parser_nodes___AMethid, ID_parser___parser_nodes___AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8267);
-  }
-  /* parser/parser.nit:8269 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_parser___parser_nodes___ASignature, ID_parser___parser_nodes___ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8269);
-  }
-  /* parser/parser.nit:8271 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___AAnnotations, ID_parser___parser_nodes___AAnnotations)) /*cast nullable AAnnotations*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8271);
-  }
-  /* parser/parser.nit:8272 */
-  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:8281 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8282 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8282);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8287;
-  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:8289 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8290 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8291 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8292 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8293 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8294 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8295 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8296 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8298 */
-  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, 8298);
-  }
-  /* parser/parser.nit:8300 */
-  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, 8300);
-  }
-  /* parser/parser.nit:8302 */
-  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, 8302);
-  }
-  /* parser/parser.nit:8304 */
-  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, 8304);
-  }
-  /* parser/parser.nit:8306 */
-  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, 8306);
-  }
-  /* parser/parser.nit:8308 */
-  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, 8308);
-  }
-  /* parser/parser.nit:8310 */
-  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, 8310);
-  }
-  /* parser/parser.nit:8311 */
-  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:8320 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8321 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8321);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8326;
-  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:8328 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8329 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8330 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8333 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8334 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8335 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8337 */
-  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, 8337);
-  }
-  /* parser/parser.nit:8339 */
-  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, 8339);
-  }
-  /* parser/parser.nit:8341 */
-  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, 8341);
-  }
-  /* parser/parser.nit:8343 */
-  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, 8343);
-  }
-  /* parser/parser.nit:8345 */
-  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, 8345);
-  }
-  /* parser/parser.nit:8346 */
-  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:8355 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8356 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8356);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8361;
-  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:8363 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8364 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8365 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8368 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8369 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8370 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8371 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8373 */
-  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, 8373);
-  }
-  /* parser/parser.nit:8375 */
-  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, 8375);
-  }
-  /* parser/parser.nit:8377 */
-  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, 8377);
-  }
-  /* parser/parser.nit:8379 */
-  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, 8379);
-  }
-  /* parser/parser.nit:8381 */
-  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, 8381);
-  }
-  /* parser/parser.nit:8383 */
-  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, 8383);
-  }
-  /* parser/parser.nit:8384 */
-  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:8393 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8394 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8394);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8399;
-  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:8401 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8402 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8403 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8406 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8407 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8408 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8410 */
-  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, 8410);
-  }
-  /* parser/parser.nit:8412 */
-  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, 8412);
-  }
-  /* parser/parser.nit:8414 */
-  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, 8414);
-  }
-  /* parser/parser.nit:8416 */
-  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, 8416);
-  }
-  /* parser/parser.nit:8418 */
-  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, 8418);
-  }
-  /* parser/parser.nit:8419 */
-  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:8427 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8428 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8428);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8433;
-  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:8435 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8436 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8437 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8440 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8441 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8442 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8443 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8445 */
-  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, 8445);
-  }
-  /* parser/parser.nit:8447 */
-  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, 8447);
-  }
-  /* parser/parser.nit:8449 */
-  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, 8449);
-  }
-  /* parser/parser.nit:8451 */
-  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, 8451);
-  }
-  /* parser/parser.nit:8453 */
-  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, 8453);
-  }
-  /* parser/parser.nit:8455 */
-  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, 8455);
-  }
-  /* parser/parser.nit:8456 */
-  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:8464 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8465 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8465);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8470;
-  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:8472 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8473 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8474 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8477 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8478 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8479 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8481 */
-  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, 8481);
-  }
-  /* parser/parser.nit:8483 */
-  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, 8483);
-  }
-  /* parser/parser.nit:8485 */
-  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, 8485);
-  }
-  /* parser/parser.nit:8487 */
-  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, 8487);
-  }
-  /* parser/parser.nit:8489 */
-  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, 8489);
-  }
-  /* parser/parser.nit:8490 */
-  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:8501 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8502 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8502);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8507;
-  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:8509 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8510 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8511 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8514 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8515 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8516 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8517 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8519 */
-  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, 8519);
-  }
-  /* parser/parser.nit:8521 */
-  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, 8521);
-  }
-  /* parser/parser.nit:8523 */
-  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, 8523);
-  }
-  /* parser/parser.nit:8525 */
-  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, 8525);
-  }
-  /* parser/parser.nit:8527 */
-  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, 8527);
-  }
-  /* parser/parser.nit:8529 */
-  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, 8529);
-  }
-  /* parser/parser.nit:8530 */
-  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:8541 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8542 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8542);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8547;
-  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:8549 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8550 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8551 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8552 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8555 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8556 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8557 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8559 */
-  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, 8559);
-  }
-  /* parser/parser.nit:8561 */
-  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, 8561);
-  }
-  /* parser/parser.nit:8563 */
-  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, 8563);
-  }
-  /* parser/parser.nit:8565 */
-  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, 8565);
-  }
-  /* parser/parser.nit:8567 */
-  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, 8567);
-  }
-  /* parser/parser.nit:8569 */
-  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, 8569);
-  }
-  /* parser/parser.nit:8570 */
-  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:8581 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8582 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8582);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8587;
-  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:8589 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8590 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8591 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8592 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8595 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8596 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8597 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8598 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8600 */
-  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, 8600);
-  }
-  /* parser/parser.nit:8602 */
-  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, 8602);
-  }
-  /* parser/parser.nit:8604 */
-  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, 8604);
-  }
-  /* parser/parser.nit:8606 */
-  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, 8606);
-  }
-  /* parser/parser.nit:8608 */
-  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, 8608);
-  }
-  /* parser/parser.nit:8610 */
-  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, 8610);
-  }
-  /* parser/parser.nit:8612 */
-  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, 8612);
-  }
-  /* parser/parser.nit:8613 */
-  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:8624 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8625 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8625);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8630;
-  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:8632 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8633 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8634 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8635 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8638 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8639 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8640 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8642 */
-  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, 8642);
-  }
-  /* parser/parser.nit:8644 */
-  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, 8644);
-  }
-  /* parser/parser.nit:8646 */
-  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, 8646);
-  }
-  /* parser/parser.nit:8648 */
-  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, 8648);
-  }
-  /* parser/parser.nit:8650 */
-  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, 8650);
-  }
-  /* parser/parser.nit:8652 */
-  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, 8652);
-  }
-  /* parser/parser.nit:8653 */
-  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:8664 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8665 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8665);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8670;
-  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:8672 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8673 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8674 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8675 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8678 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8679 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8680 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8681 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8683 */
-  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, 8683);
-  }
-  /* parser/parser.nit:8685 */
-  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, 8685);
-  }
-  /* parser/parser.nit:8687 */
-  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, 8687);
-  }
-  /* parser/parser.nit:8689 */
-  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, 8689);
-  }
-  /* parser/parser.nit:8691 */
-  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, 8691);
-  }
-  /* parser/parser.nit:8693 */
-  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, 8693);
-  }
-  /* parser/parser.nit:8695 */
-  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, 8695);
-  }
-  /* parser/parser.nit:8696 */
-  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:8707 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8708 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8708);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8713;
-  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:8715 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8716 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8717 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8718 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8719 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8722 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8723 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8724 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8726 */
-  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, 8726);
-  }
-  /* parser/parser.nit:8728 */
-  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, 8728);
-  }
-  /* parser/parser.nit:8730 */
-  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, 8730);
-  }
-  /* parser/parser.nit:8732 */
-  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, 8732);
-  }
-  /* parser/parser.nit:8734 */
-  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, 8734);
-  }
-  /* parser/parser.nit:8736 */
-  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, 8736);
-  }
-  /* parser/parser.nit:8738 */
-  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, 8738);
-  }
-  /* parser/parser.nit:8739 */
-  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:8750 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8751 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8751);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8756;
-  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:8758 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8759 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8760 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8761 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8762 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8765 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8766 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8767 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8768 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8770 */
-  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, 8770);
-  }
-  /* parser/parser.nit:8772 */
-  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, 8772);
-  }
-  /* parser/parser.nit:8774 */
-  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, 8774);
-  }
-  /* parser/parser.nit:8776 */
-  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, 8776);
-  }
-  /* parser/parser.nit:8778 */
-  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, 8778);
-  }
-  /* parser/parser.nit:8780 */
-  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, 8780);
-  }
-  /* parser/parser.nit:8782 */
-  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, 8782);
-  }
-  /* parser/parser.nit:8784 */
-  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, 8784);
-  }
-  /* parser/parser.nit:8785 */
-  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:8796 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8797 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8797);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8802;
-  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:8804 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8805 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8806 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8807 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8810 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8811 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8812 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8814 */
-  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, 8814);
-  }
-  /* parser/parser.nit:8816 */
-  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, 8816);
-  }
-  /* parser/parser.nit:8818 */
-  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, 8818);
-  }
-  /* parser/parser.nit:8820 */
-  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, 8820);
-  }
-  /* parser/parser.nit:8822 */
-  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, 8822);
-  }
-  /* parser/parser.nit:8824 */
-  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, 8824);
-  }
-  /* parser/parser.nit:8825 */
-  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:8836 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8837 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8837);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8842;
-  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:8844 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8845 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8846 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8847 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8850 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8851 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8852 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8853 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8855 */
-  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, 8855);
-  }
-  /* parser/parser.nit:8857 */
-  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, 8857);
-  }
-  /* parser/parser.nit:8859 */
-  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, 8859);
-  }
-  /* parser/parser.nit:8861 */
-  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, 8861);
-  }
-  /* parser/parser.nit:8863 */
-  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, 8863);
-  }
-  /* parser/parser.nit:8865 */
-  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, 8865);
-  }
-  /* parser/parser.nit:8867 */
-  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, 8867);
-  }
-  /* parser/parser.nit:8868 */
-  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:8879 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8880 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8880);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8885;
-  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:8887 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8888 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8889 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8890 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8891 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8892 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8893 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8894 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8895 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8896 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8898 */
-  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, 8898);
-  }
-  /* parser/parser.nit:8900 */
-  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, 8900);
-  }
-  /* parser/parser.nit:8902 */
-  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, 8902);
-  }
-  /* parser/parser.nit:8904 */
-  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, 8904);
-  }
-  /* parser/parser.nit:8906 */
-  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, 8906);
-  }
-  /* parser/parser.nit:8908 */
-  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, 8908);
-  }
-  /* parser/parser.nit:8910 */
-  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, 8910);
-  }
-  /* parser/parser.nit:8911 */
-  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:8922 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8923 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8923);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8928;
-  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:8930 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8931 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8932 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8933 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8934 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8937 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8938 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8939 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8940 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8942 */
-  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, 8942);
-  }
-  /* parser/parser.nit:8944 */
-  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, 8944);
-  }
-  /* parser/parser.nit:8946 */
-  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, 8946);
-  }
-  /* parser/parser.nit:8948 */
-  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, 8948);
-  }
-  /* parser/parser.nit:8950 */
-  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, 8950);
-  }
-  /* parser/parser.nit:8952 */
-  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, 8952);
-  }
-  /* parser/parser.nit:8954 */
-  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, 8954);
-  }
-  /* parser/parser.nit:8956 */
-  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, 8956);
-  }
-  /* parser/parser.nit:8957 */
-  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:8968 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:8969 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8969);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 8974;
-  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:8976 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:8977 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8978 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8979 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8980 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8983 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8984 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8985 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:8987 */
-  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, 8987);
-  }
-  /* parser/parser.nit:8989 */
-  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, 8989);
-  }
-  /* parser/parser.nit:8991 */
-  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, 8991);
-  }
-  /* parser/parser.nit:8993 */
-  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, 8993);
-  }
-  /* parser/parser.nit:8995 */
-  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, 8995);
-  }
-  /* parser/parser.nit:8997 */
-  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, 8997);
-  }
-  /* parser/parser.nit:8999 */
-  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, 8999);
-  }
-  /* parser/parser.nit:9000 */
-  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:9011 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9012 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9012);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9017;
-  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:9019 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9020 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9021 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9022 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9023 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9026 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9027 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9028 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9029 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9031 */
-  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, 9031);
-  }
-  /* parser/parser.nit:9033 */
-  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, 9033);
-  }
-  /* parser/parser.nit:9035 */
-  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, 9035);
-  }
-  /* parser/parser.nit:9037 */
-  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, 9037);
-  }
-  /* parser/parser.nit:9039 */
-  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, 9039);
-  }
-  /* parser/parser.nit:9041 */
-  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, 9041);
-  }
-  /* parser/parser.nit:9043 */
-  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, 9043);
-  }
-  /* parser/parser.nit:9045 */
-  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, 9045);
-  }
-  /* parser/parser.nit:9046 */
-  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:9057 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9058 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9058);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9063;
-  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:9065 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9066 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9067 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9068 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9069 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9070 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9073 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9074 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9075 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9077 */
-  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, 9077);
-  }
-  /* parser/parser.nit:9079 */
-  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, 9079);
-  }
-  /* parser/parser.nit:9081 */
-  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, 9081);
-  }
-  /* parser/parser.nit:9083 */
-  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, 9083);
-  }
-  /* parser/parser.nit:9085 */
-  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, 9085);
-  }
-  /* parser/parser.nit:9087 */
-  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, 9087);
-  }
-  /* parser/parser.nit:9089 */
-  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, 9089);
-  }
-  /* parser/parser.nit:9091 */
-  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, 9091);
-  }
-  /* parser/parser.nit:9092 */
-  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:9103 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9104 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9104);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9109;
-  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:9111 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9112 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9113 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9114 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9115 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9116 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9119 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9120 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9121 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9122 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9124 */
-  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, 9124);
-  }
-  /* parser/parser.nit:9126 */
-  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, 9126);
-  }
-  /* parser/parser.nit:9128 */
-  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, 9128);
-  }
-  /* parser/parser.nit:9130 */
-  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, 9130);
-  }
-  /* parser/parser.nit:9132 */
-  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, 9132);
-  }
-  /* parser/parser.nit:9134 */
-  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, 9134);
-  }
-  /* parser/parser.nit:9136 */
-  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, 9136);
-  }
-  /* parser/parser.nit:9138 */
-  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, 9138);
-  }
-  /* parser/parser.nit:9140 */
-  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, 9140);
-  }
-  /* parser/parser.nit:9141 */
-  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:9152 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9153 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9153);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9158;
-  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:9160 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9161 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9162 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9163 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9164 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9165 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9166 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9168 */
-  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, 9168);
-  }
-  /* parser/parser.nit:9170 */
-  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, 9170);
-  }
-  /* parser/parser.nit:9172 */
-  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, 9172);
-  }
-  /* parser/parser.nit:9174 */
-  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, 9174);
-  }
-  /* parser/parser.nit:9176 */
-  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, 9176);
-  }
-  /* parser/parser.nit:9178 */
-  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, 9178);
-  }
-  /* parser/parser.nit:9179 */
-  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:9190 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9191 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9191);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9196;
-  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:9198 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9199 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9200 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9201 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9202 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9203 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9204 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9205 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9207 */
-  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, 9207);
-  }
-  /* parser/parser.nit:9209 */
-  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, 9209);
-  }
-  /* parser/parser.nit:9211 */
-  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, 9211);
-  }
-  /* parser/parser.nit:9213 */
-  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, 9213);
-  }
-  /* parser/parser.nit:9215 */
-  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, 9215);
-  }
-  /* parser/parser.nit:9217 */
-  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, 9217);
-  }
-  /* parser/parser.nit:9219 */
-  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, 9219);
-  }
-  /* parser/parser.nit:9220 */
-  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:9231 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9232 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9232);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9237;
-  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:9239 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9240 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9241 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9242 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9243 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9244 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9245 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9246 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9248 */
-  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, 9248);
-  }
-  /* parser/parser.nit:9250 */
-  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, 9250);
-  }
-  /* parser/parser.nit:9252 */
-  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, 9252);
-  }
-  /* parser/parser.nit:9254 */
-  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, 9254);
-  }
-  /* parser/parser.nit:9256 */
-  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, 9256);
-  }
-  /* parser/parser.nit:9258 */
-  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, 9258);
-  }
-  /* parser/parser.nit:9260 */
-  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, 9260);
-  }
-  /* parser/parser.nit:9261 */
-  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:9272 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9273 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9273);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9278;
-  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:9280 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9281 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9282 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9283 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9284 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9285 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9286 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9287 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9288 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9290 */
-  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, 9290);
-  }
-  /* parser/parser.nit:9292 */
-  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, 9292);
-  }
-  /* parser/parser.nit:9294 */
-  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, 9294);
-  }
-  /* parser/parser.nit:9296 */
-  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, 9296);
-  }
-  /* parser/parser.nit:9298 */
-  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, 9298);
-  }
-  /* parser/parser.nit:9300 */
-  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, 9300);
-  }
-  /* parser/parser.nit:9302 */
-  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, 9302);
-  }
-  /* parser/parser.nit:9304 */
-  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, 9304);
-  }
-  /* parser/parser.nit:9305 */
-  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:9316 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9317 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9317);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9322;
-  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:9324 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9325 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9326 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9327 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9328 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9330 */
-  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, 9330);
-  }
-  /* parser/parser.nit:9332 */
-  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, 9332);
-  }
-  /* parser/parser.nit:9334 */
-  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, 9334);
-  }
-  /* parser/parser.nit:9336 */
-  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, 9336);
-  }
-  /* parser/parser.nit:9337 */
-  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:9350 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9351 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9351);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9356;
-  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:9358 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9359 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9360 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9361 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9362 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9363 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9365 */
-  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, 9365);
-  }
-  /* parser/parser.nit:9367 */
-  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, 9367);
-  }
-  /* parser/parser.nit:9369 */
-  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, 9369);
-  }
-  /* parser/parser.nit:9371 */
-  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, 9371);
-  }
-  /* parser/parser.nit:9373 */
-  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, 9373);
-  }
-  /* parser/parser.nit:9374 */
-  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:9387 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9388 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9388);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9393;
-  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:9395 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9396 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9397 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9398 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9399 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9400 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9402 */
-  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, 9402);
-  }
-  /* parser/parser.nit:9404 */
-  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, 9404);
-  }
-  /* parser/parser.nit:9406 */
-  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, 9406);
-  }
-  /* parser/parser.nit:9408 */
-  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, 9408);
-  }
-  /* parser/parser.nit:9410 */
-  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, 9410);
-  }
-  /* parser/parser.nit:9411 */
-  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:9424 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9425 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9425);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9430;
-  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:9432 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9433 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9434 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9435 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9436 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9437 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9438 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9440 */
-  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, 9440);
-  }
-  /* parser/parser.nit:9442 */
-  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, 9442);
-  }
-  /* parser/parser.nit:9444 */
-  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, 9444);
-  }
-  /* parser/parser.nit:9446 */
-  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, 9446);
-  }
-  /* parser/parser.nit:9448 */
-  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, 9448);
-  }
-  /* parser/parser.nit:9450 */
-  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, 9450);
-  }
-  /* parser/parser.nit:9451 */
-  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:9464 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9465 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9465);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9470;
-  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:9472 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9473 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9474 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9475 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9476 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9477 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9479 */
-  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, 9479);
-  }
-  /* parser/parser.nit:9481 */
-  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, 9481);
-  }
-  /* parser/parser.nit:9483 */
-  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, 9483);
-  }
-  /* parser/parser.nit:9485 */
-  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, 9485);
-  }
-  /* parser/parser.nit:9487 */
-  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, 9487);
-  }
-  /* parser/parser.nit:9488 */
-  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:9501 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9502 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9502);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9507;
-  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:9509 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9510 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9511 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9512 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9513 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9514 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9515 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9517 */
-  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, 9517);
-  }
-  /* parser/parser.nit:9519 */
-  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, 9519);
-  }
-  /* parser/parser.nit:9521 */
-  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, 9521);
-  }
-  /* parser/parser.nit:9523 */
-  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, 9523);
-  }
-  /* parser/parser.nit:9525 */
-  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, 9525);
-  }
-  /* parser/parser.nit:9527 */
-  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, 9527);
-  }
-  /* parser/parser.nit:9528 */
-  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:9541 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9542 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9542);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9547;
-  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:9549 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9550 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9551 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9552 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9553 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9554 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9555 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9557 */
-  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, 9557);
-  }
-  /* parser/parser.nit:9559 */
-  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, 9559);
-  }
-  /* parser/parser.nit:9561 */
-  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, 9561);
-  }
-  /* parser/parser.nit:9563 */
-  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, 9563);
-  }
-  /* parser/parser.nit:9565 */
-  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, 9565);
-  }
-  /* parser/parser.nit:9567 */
-  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, 9567);
-  }
-  /* parser/parser.nit:9568 */
-  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:9581 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9582 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9582);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9587;
-  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:9589 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9590 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9591 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9592 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9593 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9594 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9595 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9596 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9598 */
-  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, 9598);
-  }
-  /* parser/parser.nit:9600 */
-  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, 9600);
-  }
-  /* parser/parser.nit:9602 */
-  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, 9602);
-  }
-  /* parser/parser.nit:9604 */
-  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, 9604);
-  }
-  /* parser/parser.nit:9606 */
-  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, 9606);
-  }
-  /* parser/parser.nit:9608 */
-  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, 9608);
-  }
-  /* parser/parser.nit:9610 */
-  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, 9610);
-  }
-  /* parser/parser.nit:9611 */
-  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:9624 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9625 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9625);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9630;
-  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:9632 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9633 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9634 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9635 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9636 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9637 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9639 */
-  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, 9639);
-  }
-  /* parser/parser.nit:9641 */
-  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, 9641);
-  }
-  /* parser/parser.nit:9643 */
-  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, 9643);
-  }
-  /* parser/parser.nit:9645 */
-  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, 9645);
-  }
-  /* parser/parser.nit:9647 */
-  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, 9647);
-  }
-  /* parser/parser.nit:9648 */
-  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:9661 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9662 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9662);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9667;
-  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:9669 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9670 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9671 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9672 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9673 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9674 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9675 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9677 */
-  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, 9677);
-  }
-  /* parser/parser.nit:9679 */
-  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, 9679);
-  }
-  /* parser/parser.nit:9681 */
-  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, 9681);
-  }
-  /* parser/parser.nit:9683 */
-  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, 9683);
-  }
-  /* parser/parser.nit:9685 */
-  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, 9685);
-  }
-  /* parser/parser.nit:9687 */
-  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, 9687);
-  }
-  /* parser/parser.nit:9688 */
-  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:9701 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9702 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9702);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9707;
-  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:9709 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9710 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9711 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9712 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9713 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9714 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9715 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9717 */
-  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, 9717);
-  }
-  /* parser/parser.nit:9719 */
-  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, 9719);
-  }
-  /* parser/parser.nit:9721 */
-  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, 9721);
-  }
-  /* parser/parser.nit:9723 */
-  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, 9723);
-  }
-  /* parser/parser.nit:9725 */
-  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, 9725);
-  }
-  /* parser/parser.nit:9727 */
-  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, 9727);
-  }
-  /* parser/parser.nit:9728 */
-  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:9741 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9742 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9742);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9747;
-  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:9749 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9750 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9751 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9752 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9753 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9754 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9755 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9756 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9758 */
-  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, 9758);
-  }
-  /* parser/parser.nit:9760 */
-  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, 9760);
-  }
-  /* parser/parser.nit:9762 */
-  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, 9762);
-  }
-  /* parser/parser.nit:9764 */
-  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, 9764);
-  }
-  /* parser/parser.nit:9766 */
-  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, 9766);
-  }
-  /* parser/parser.nit:9768 */
-  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, 9768);
-  }
-  /* parser/parser.nit:9770 */
-  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, 9770);
-  }
-  /* parser/parser.nit:9771 */
-  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:9784 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9785 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9785);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9790;
-  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:9792 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9793 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9794 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9795 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9796 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9797 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9798 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9800 */
-  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, 9800);
-  }
-  /* parser/parser.nit:9802 */
-  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, 9802);
-  }
-  /* parser/parser.nit:9804 */
-  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, 9804);
-  }
-  /* parser/parser.nit:9806 */
-  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, 9806);
-  }
-  /* parser/parser.nit:9808 */
-  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, 9808);
-  }
-  /* parser/parser.nit:9810 */
-  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, 9810);
-  }
-  /* parser/parser.nit:9811 */
-  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:9824 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9825 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9825);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9830;
-  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:9832 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9833 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9834 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9835 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9836 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9837 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9838 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9839 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9841 */
-  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, 9841);
-  }
-  /* parser/parser.nit:9843 */
-  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, 9843);
-  }
-  /* parser/parser.nit:9845 */
-  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, 9845);
-  }
-  /* parser/parser.nit:9847 */
-  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, 9847);
-  }
-  /* parser/parser.nit:9849 */
-  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, 9849);
-  }
-  /* parser/parser.nit:9851 */
-  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, 9851);
-  }
-  /* parser/parser.nit:9853 */
-  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, 9853);
-  }
-  /* parser/parser.nit:9854 */
-  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:9867 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9868 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9868);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9873;
-  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:9875 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9876 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9877 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9878 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9879 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9880 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9881 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9882 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9884 */
-  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, 9884);
-  }
-  /* parser/parser.nit:9886 */
-  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, 9886);
-  }
-  /* parser/parser.nit:9888 */
-  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, 9888);
-  }
-  /* parser/parser.nit:9890 */
-  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, 9890);
-  }
-  /* parser/parser.nit:9892 */
-  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, 9892);
-  }
-  /* parser/parser.nit:9894 */
-  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, 9894);
-  }
-  /* parser/parser.nit:9896 */
-  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, 9896);
-  }
-  /* parser/parser.nit:9897 */
-  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:9910 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9911 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9911);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9916;
-  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:9918 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9919 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9920 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9921 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9922 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9923 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9924 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9925 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9926 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9928 */
-  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, 9928);
-  }
-  /* parser/parser.nit:9930 */
-  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, 9930);
-  }
-  /* parser/parser.nit:9932 */
-  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, 9932);
-  }
-  /* parser/parser.nit:9934 */
-  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, 9934);
-  }
-  /* parser/parser.nit:9936 */
-  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, 9936);
-  }
-  /* parser/parser.nit:9938 */
-  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, 9938);
-  }
-  /* parser/parser.nit:9940 */
-  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, 9940);
-  }
-  /* parser/parser.nit:9942 */
-  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, 9942);
-  }
-  /* parser/parser.nit:9943 */
-  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:9956 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9957 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9957);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 9962;
-  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:9964 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:9965 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9966 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9967 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9968 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9969 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9970 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9971 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:9973 */
-  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, 9973);
-  }
-  /* parser/parser.nit:9975 */
-  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, 9975);
-  }
-  /* parser/parser.nit:9977 */
-  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, 9977);
-  }
-  /* parser/parser.nit:9979 */
-  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, 9979);
-  }
-  /* parser/parser.nit:9981 */
-  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, 9981);
-  }
-  /* parser/parser.nit:9982 */
-  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:9995 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:9996 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9996);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10001;
-  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:10003 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10004 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10005 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10006 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10009 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10010 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10011 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10013 */
-  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, 10013);
-  }
-  /* parser/parser.nit:10015 */
-  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, 10015);
-  }
-  /* parser/parser.nit:10017 */
-  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, 10017);
-  }
-  /* parser/parser.nit:10019 */
-  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, 10019);
-  }
-  /* parser/parser.nit:10021 */
-  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, 10021);
-  }
-  /* parser/parser.nit:10023 */
-  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, 10023);
-  }
-  /* parser/parser.nit:10024 */
-  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:10037 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10038 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10038);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10043;
-  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:10045 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10046 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10047 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10048 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10051 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10052 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10053 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10055 */
-  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, 10055);
-  }
-  /* parser/parser.nit:10057 */
-  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, 10057);
-  }
-  /* parser/parser.nit:10059 */
-  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, 10059);
-  }
-  /* parser/parser.nit:10061 */
-  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, 10061);
-  }
-  /* parser/parser.nit:10063 */
-  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, 10063);
-  }
-  /* parser/parser.nit:10065 */
-  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, 10065);
-  }
-  /* parser/parser.nit:10066 */
-  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:10079 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10080 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10080);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10085;
-  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:10087 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10088 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10089 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10090 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10093 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10094 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10095 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10096 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10098 */
-  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, 10098);
-  }
-  /* parser/parser.nit:10100 */
-  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, 10100);
-  }
-  /* parser/parser.nit:10102 */
-  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, 10102);
-  }
-  /* parser/parser.nit:10104 */
-  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, 10104);
-  }
-  /* parser/parser.nit:10106 */
-  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, 10106);
-  }
-  /* parser/parser.nit:10108 */
-  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, 10108);
-  }
-  /* parser/parser.nit:10110 */
-  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, 10110);
-  }
-  /* parser/parser.nit:10111 */
-  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:10124 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10125 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10125);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10130;
-  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:10132 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10133 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10134 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10135 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10138 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10139 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10140 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10142 */
-  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, 10142);
-  }
-  /* parser/parser.nit:10144 */
-  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, 10144);
-  }
-  /* parser/parser.nit:10146 */
-  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, 10146);
-  }
-  /* parser/parser.nit:10148 */
-  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, 10148);
-  }
-  /* parser/parser.nit:10150 */
-  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, 10150);
-  }
-  /* parser/parser.nit:10152 */
-  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, 10152);
-  }
-  /* parser/parser.nit:10153 */
-  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:10166 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10167 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10167);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10172;
-  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:10174 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10175 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10176 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10177 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10180 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10181 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10182 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10183 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10185 */
-  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, 10185);
-  }
-  /* parser/parser.nit:10187 */
-  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, 10187);
-  }
-  /* parser/parser.nit:10189 */
-  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, 10189);
-  }
-  /* parser/parser.nit:10191 */
-  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, 10191);
-  }
-  /* parser/parser.nit:10193 */
-  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, 10193);
-  }
-  /* parser/parser.nit:10195 */
-  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, 10195);
-  }
-  /* parser/parser.nit:10197 */
-  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, 10197);
-  }
-  /* parser/parser.nit:10198 */
-  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:10211 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10212 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10212);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10217;
-  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:10219 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10220 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10221 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10222 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10225 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10226 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10227 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10228 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10230 */
-  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, 10230);
-  }
-  /* parser/parser.nit:10232 */
-  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, 10232);
-  }
-  /* parser/parser.nit:10234 */
-  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, 10234);
-  }
-  /* parser/parser.nit:10236 */
-  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, 10236);
-  }
-  /* parser/parser.nit:10238 */
-  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, 10238);
-  }
-  /* parser/parser.nit:10240 */
-  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, 10240);
-  }
-  /* parser/parser.nit:10242 */
-  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, 10242);
-  }
-  /* parser/parser.nit:10243 */
-  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:10256 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10257 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10257);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10262;
-  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:10264 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10265 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10266 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10267 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10268 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10269 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10270 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10271 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10272 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10273 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10274 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10276 */
-  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, 10276);
-  }
-  /* parser/parser.nit:10278 */
-  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, 10278);
-  }
-  /* parser/parser.nit:10280 */
-  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, 10280);
-  }
-  /* parser/parser.nit:10282 */
-  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, 10282);
-  }
-  /* parser/parser.nit:10284 */
-  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, 10284);
-  }
-  /* parser/parser.nit:10286 */
-  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, 10286);
-  }
-  /* parser/parser.nit:10288 */
-  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, 10288);
-  }
-  /* parser/parser.nit:10290 */
-  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, 10290);
-  }
-  /* parser/parser.nit:10291 */
-  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:10304 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10305 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10305);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10310;
-  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:10312 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10313 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10314 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10315 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10318 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10319 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10320 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10322 */
-  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, 10322);
-  }
-  /* parser/parser.nit:10324 */
-  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, 10324);
-  }
-  /* parser/parser.nit:10326 */
-  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, 10326);
-  }
-  /* parser/parser.nit:10328 */
-  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, 10328);
-  }
-  /* parser/parser.nit:10330 */
-  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, 10330);
-  }
-  /* parser/parser.nit:10332 */
-  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, 10332);
-  }
-  /* parser/parser.nit:10333 */
-  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:10346 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10347 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10347);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10352;
-  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:10354 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10355 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10356 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10357 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10360 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10361 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10362 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10363 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10365 */
-  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, 10365);
-  }
-  /* parser/parser.nit:10367 */
-  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, 10367);
-  }
-  /* parser/parser.nit:10369 */
-  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, 10369);
-  }
-  /* parser/parser.nit:10371 */
-  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, 10371);
-  }
-  /* parser/parser.nit:10373 */
-  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, 10373);
-  }
-  /* parser/parser.nit:10375 */
-  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, 10375);
-  }
-  /* parser/parser.nit:10377 */
-  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, 10377);
-  }
-  /* parser/parser.nit:10378 */
-  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:10391 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10392 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10392);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10397;
-  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:10399 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10400 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10401 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10402 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10405 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10406 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10407 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10408 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10410 */
-  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, 10410);
-  }
-  /* parser/parser.nit:10412 */
-  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, 10412);
-  }
-  /* parser/parser.nit:10414 */
-  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, 10414);
-  }
-  /* parser/parser.nit:10416 */
-  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, 10416);
-  }
-  /* parser/parser.nit:10418 */
-  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, 10418);
-  }
-  /* parser/parser.nit:10420 */
-  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, 10420);
-  }
-  /* parser/parser.nit:10422 */
-  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, 10422);
-  }
-  /* parser/parser.nit:10423 */
-  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:10436 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10437 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10437);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10442;
-  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:10444 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10445 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10446 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10447 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10450 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10451 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10452 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10453 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10454 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10456 */
-  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, 10456);
-  }
-  /* parser/parser.nit:10458 */
-  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, 10458);
-  }
-  /* parser/parser.nit:10460 */
-  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, 10460);
-  }
-  /* parser/parser.nit:10462 */
-  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, 10462);
-  }
-  /* parser/parser.nit:10464 */
-  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, 10464);
-  }
-  /* parser/parser.nit:10466 */
-  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, 10466);
-  }
-  /* parser/parser.nit:10468 */
-  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, 10468);
-  }
-  /* parser/parser.nit:10470 */
-  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, 10470);
-  }
-  /* parser/parser.nit:10471 */
-  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:10484 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10485 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10485);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10490;
-  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:10492 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10493 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10494 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10495 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10498 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10499 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10500 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10501 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10503 */
-  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, 10503);
-  }
-  /* parser/parser.nit:10505 */
-  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, 10505);
-  }
-  /* parser/parser.nit:10507 */
-  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, 10507);
-  }
-  /* parser/parser.nit:10509 */
-  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, 10509);
-  }
-  /* parser/parser.nit:10511 */
-  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, 10511);
-  }
-  /* parser/parser.nit:10513 */
-  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, 10513);
-  }
-  /* parser/parser.nit:10515 */
-  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, 10515);
-  }
-  /* parser/parser.nit:10516 */
-  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:10529 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10530 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10530);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10535;
-  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:10537 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10538 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10539 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10540 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10543 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10544 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10545 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10546 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10547 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10549 */
-  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, 10549);
-  }
-  /* parser/parser.nit:10551 */
-  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, 10551);
-  }
-  /* parser/parser.nit:10553 */
-  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, 10553);
-  }
-  /* parser/parser.nit:10555 */
-  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, 10555);
-  }
-  /* parser/parser.nit:10557 */
-  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, 10557);
-  }
-  /* parser/parser.nit:10559 */
-  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, 10559);
-  }
-  /* parser/parser.nit:10561 */
-  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, 10561);
-  }
-  /* parser/parser.nit:10563 */
-  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, 10563);
-  }
-  /* parser/parser.nit:10564 */
-  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:10577 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10578 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10578);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10583;
-  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:10585 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10586 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10587 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10588 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10591 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10592 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10593 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10594 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10595 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10597 */
-  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, 10597);
-  }
-  /* parser/parser.nit:10599 */
-  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, 10599);
-  }
-  /* parser/parser.nit:10601 */
-  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, 10601);
-  }
-  /* parser/parser.nit:10603 */
-  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, 10603);
-  }
-  /* parser/parser.nit:10605 */
-  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, 10605);
-  }
-  /* parser/parser.nit:10607 */
-  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, 10607);
-  }
-  /* parser/parser.nit:10609 */
-  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, 10609);
-  }
-  /* parser/parser.nit:10611 */
-  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, 10611);
-  }
-  /* parser/parser.nit:10612 */
-  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:10625 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10626 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10626);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10631;
-  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:10633 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10634 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10635 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10636 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10639 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10640 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10641 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10642 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10643 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10644 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10646 */
-  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, 10646);
-  }
-  /* parser/parser.nit:10648 */
-  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, 10648);
-  }
-  /* parser/parser.nit:10650 */
-  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, 10650);
-  }
-  /* parser/parser.nit:10652 */
-  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, 10652);
-  }
-  /* parser/parser.nit:10654 */
-  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, 10654);
-  }
-  /* parser/parser.nit:10656 */
-  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, 10656);
-  }
-  /* parser/parser.nit:10658 */
-  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, 10658);
-  }
-  /* parser/parser.nit:10660 */
-  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, 10660);
-  }
-  /* parser/parser.nit:10662 */
-  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, 10662);
-  }
-  /* parser/parser.nit:10663 */
-  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:10676 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10677 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10677);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 10682;
-  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:10684 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10685 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10686 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10687 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10688 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10690 */
-  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, 10690);
-  }
-  /* parser/parser.nit:10692 */
-  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, 10692);
-  }
-  /* parser/parser.nit:10694 */
-  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, 10694);
-  }
-  /* parser/parser.nit:10696 */
-  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, 10696);
-  }
-  /* parser/parser.nit:10697 */
-  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:10710 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10711 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10711);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10716;
-  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:10718 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10719 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10720 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10721 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10722 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10723 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10725 */
-  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, 10725);
-  }
-  /* parser/parser.nit:10727 */
-  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, 10727);
-  }
-  /* parser/parser.nit:10729 */
-  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, 10729);
-  }
-  /* parser/parser.nit:10731 */
-  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, 10731);
-  }
-  /* parser/parser.nit:10733 */
-  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, 10733);
-  }
-  /* parser/parser.nit:10734 */
-  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:10747 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10748 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10748);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10753;
-  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:10755 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10756 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10757 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10758 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10759 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10760 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10762 */
-  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, 10762);
-  }
-  /* parser/parser.nit:10764 */
-  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, 10764);
-  }
-  /* parser/parser.nit:10766 */
-  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, 10766);
-  }
-  /* parser/parser.nit:10768 */
-  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, 10768);
-  }
-  /* parser/parser.nit:10770 */
-  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, 10770);
-  }
-  /* parser/parser.nit:10771 */
-  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:10784 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10785 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10785);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10790;
-  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:10792 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10793 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10794 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10795 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10796 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10797 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10798 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10800 */
-  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, 10800);
-  }
-  /* parser/parser.nit:10802 */
-  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, 10802);
-  }
-  /* parser/parser.nit:10804 */
-  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, 10804);
-  }
-  /* parser/parser.nit:10806 */
-  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, 10806);
-  }
-  /* parser/parser.nit:10808 */
-  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, 10808);
-  }
-  /* parser/parser.nit:10810 */
-  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, 10810);
-  }
-  /* parser/parser.nit:10811 */
-  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:10824 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:10825 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10825);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10830;
-  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:10832 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10833 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10834 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10835 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10836 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10837 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10839 */
-  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, 10839);
-  }
-  /* parser/parser.nit:10841 */
-  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, 10841);
-  }
-  /* parser/parser.nit:10843 */
-  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, 10843);
-  }
-  /* parser/parser.nit:10845 */
-  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, 10845);
-  }
-  /* parser/parser.nit:10847 */
-  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, 10847);
-  }
-  /* parser/parser.nit:10848 */
-  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:10861 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10862 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10862);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10867;
-  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:10869 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10870 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10871 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10872 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10873 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10874 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10875 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10877 */
-  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, 10877);
-  }
-  /* parser/parser.nit:10879 */
-  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, 10879);
-  }
-  /* parser/parser.nit:10881 */
-  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, 10881);
-  }
-  /* parser/parser.nit:10883 */
-  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, 10883);
-  }
-  /* parser/parser.nit:10885 */
-  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, 10885);
-  }
-  /* parser/parser.nit:10887 */
-  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, 10887);
-  }
-  /* parser/parser.nit:10888 */
-  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:10901 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10902 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10902);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10907;
-  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:10909 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10910 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10911 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10912 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10913 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10914 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10915 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10917 */
-  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, 10917);
-  }
-  /* parser/parser.nit:10919 */
-  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, 10919);
-  }
-  /* parser/parser.nit:10921 */
-  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, 10921);
-  }
-  /* parser/parser.nit:10923 */
-  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, 10923);
-  }
-  /* parser/parser.nit:10925 */
-  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, 10925);
-  }
-  /* parser/parser.nit:10927 */
-  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, 10927);
-  }
-  /* parser/parser.nit:10928 */
-  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:10941 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10942 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10942);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 10947;
-  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:10949 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10950 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10951 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10952 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10953 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10954 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10955 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10956 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10958 */
-  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, 10958);
-  }
-  /* parser/parser.nit:10960 */
-  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, 10960);
-  }
-  /* parser/parser.nit:10962 */
-  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, 10962);
-  }
-  /* parser/parser.nit:10964 */
-  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, 10964);
-  }
-  /* parser/parser.nit:10966 */
-  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, 10966);
-  }
-  /* parser/parser.nit:10968 */
-  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, 10968);
-  }
-  /* parser/parser.nit:10970 */
-  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, 10970);
-  }
-  /* parser/parser.nit:10971 */
-  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:10984 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:10985 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10985);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 10990;
-  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:10992 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:10993 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10994 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10995 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10996 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10997 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:10999 */
-  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, 10999);
-  }
-  /* parser/parser.nit:11001 */
-  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, 11001);
-  }
-  /* parser/parser.nit:11003 */
-  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, 11003);
-  }
-  /* parser/parser.nit:11005 */
-  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, 11005);
-  }
-  /* parser/parser.nit:11007 */
-  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, 11007);
-  }
-  /* parser/parser.nit:11008 */
-  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:11021 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11022 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11022);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11027;
-  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:11029 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11030 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11031 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11032 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11033 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11034 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11035 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11037 */
-  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, 11037);
-  }
-  /* parser/parser.nit:11039 */
-  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, 11039);
-  }
-  /* parser/parser.nit:11041 */
-  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, 11041);
-  }
-  /* parser/parser.nit:11043 */
-  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, 11043);
-  }
-  /* parser/parser.nit:11045 */
-  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, 11045);
-  }
-  /* parser/parser.nit:11047 */
-  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, 11047);
-  }
-  /* parser/parser.nit:11048 */
-  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:11061 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11062 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11062);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11067;
-  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:11069 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11070 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11071 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11072 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11073 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11074 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11075 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11077 */
-  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, 11077);
-  }
-  /* parser/parser.nit:11079 */
-  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, 11079);
-  }
-  /* parser/parser.nit:11081 */
-  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, 11081);
-  }
-  /* parser/parser.nit:11083 */
-  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, 11083);
-  }
-  /* parser/parser.nit:11085 */
-  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, 11085);
-  }
-  /* parser/parser.nit:11087 */
-  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, 11087);
-  }
-  /* parser/parser.nit:11088 */
-  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:11101 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11102 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11102);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11107;
-  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:11109 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11110 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11111 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11112 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11113 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11114 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11115 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11116 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11118 */
-  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, 11118);
-  }
-  /* parser/parser.nit:11120 */
-  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, 11120);
-  }
-  /* parser/parser.nit:11122 */
-  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, 11122);
-  }
-  /* parser/parser.nit:11124 */
-  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, 11124);
-  }
-  /* parser/parser.nit:11126 */
-  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, 11126);
-  }
-  /* parser/parser.nit:11128 */
-  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, 11128);
-  }
-  /* parser/parser.nit:11130 */
-  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, 11130);
-  }
-  /* parser/parser.nit:11131 */
-  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:11144 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11145 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11145);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11150;
-  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:11152 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11153 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11154 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11155 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11156 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11157 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11158 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11160 */
-  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, 11160);
-  }
-  /* parser/parser.nit:11162 */
-  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, 11162);
-  }
-  /* parser/parser.nit:11164 */
-  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, 11164);
-  }
-  /* parser/parser.nit:11166 */
-  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, 11166);
-  }
-  /* parser/parser.nit:11168 */
-  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, 11168);
-  }
-  /* parser/parser.nit:11170 */
-  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, 11170);
-  }
-  /* parser/parser.nit:11171 */
-  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:11184 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11185 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11185);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11190;
-  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:11192 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11193 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11194 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11195 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11196 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11197 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11198 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11199 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11201 */
-  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, 11201);
-  }
-  /* parser/parser.nit:11203 */
-  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, 11203);
-  }
-  /* parser/parser.nit:11205 */
-  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, 11205);
-  }
-  /* parser/parser.nit:11207 */
-  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, 11207);
-  }
-  /* parser/parser.nit:11209 */
-  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, 11209);
-  }
-  /* parser/parser.nit:11211 */
-  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, 11211);
-  }
-  /* parser/parser.nit:11213 */
-  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, 11213);
-  }
-  /* parser/parser.nit:11214 */
-  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:11227 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11228 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11228);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11233;
-  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:11235 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11236 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11237 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11238 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11239 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11240 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11241 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11242 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11244 */
-  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, 11244);
-  }
-  /* parser/parser.nit:11246 */
-  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, 11246);
-  }
-  /* parser/parser.nit:11248 */
-  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, 11248);
-  }
-  /* parser/parser.nit:11250 */
-  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, 11250);
-  }
-  /* parser/parser.nit:11252 */
-  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, 11252);
-  }
-  /* parser/parser.nit:11254 */
-  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, 11254);
-  }
-  /* parser/parser.nit:11256 */
-  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, 11256);
-  }
-  /* parser/parser.nit:11257 */
-  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:11270 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11271 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11271);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 11276;
-  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:11278 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11279 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11280 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11281 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11282 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11283 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11284 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11285 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11286 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11288 */
-  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, 11288);
-  }
-  /* parser/parser.nit:11290 */
-  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, 11290);
-  }
-  /* parser/parser.nit:11292 */
-  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, 11292);
-  }
-  /* parser/parser.nit:11294 */
-  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, 11294);
-  }
-  /* parser/parser.nit:11296 */
-  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, 11296);
-  }
-  /* parser/parser.nit:11298 */
-  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, 11298);
-  }
-  /* parser/parser.nit:11300 */
-  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, 11300);
-  }
-  /* parser/parser.nit:11302 */
-  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, 11302);
-  }
-  /* parser/parser.nit:11303 */
-  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:11316 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11317 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11317);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11322;
-  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:11324 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11325 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11326 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11327 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11328 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11329 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11330 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11331 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11333 */
-  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, 11333);
-  }
-  /* parser/parser.nit:11335 */
-  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, 11335);
-  }
-  /* parser/parser.nit:11337 */
-  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, 11337);
-  }
-  /* parser/parser.nit:11339 */
-  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, 11339);
-  }
-  /* parser/parser.nit:11341 */
-  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, 11341);
-  }
-  /* parser/parser.nit:11342 */
-  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:11355 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11356 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11356);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11361;
-  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:11363 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11364 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11365 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11366 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11369 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11370 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11371 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11373 */
-  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, 11373);
-  }
-  /* parser/parser.nit:11375 */
-  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, 11375);
-  }
-  /* parser/parser.nit:11377 */
-  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, 11377);
-  }
-  /* parser/parser.nit:11379 */
-  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, 11379);
-  }
-  /* parser/parser.nit:11381 */
-  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, 11381);
-  }
-  /* parser/parser.nit:11383 */
-  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, 11383);
-  }
-  /* parser/parser.nit:11384 */
-  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:11397 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11398 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11398);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11403;
-  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:11405 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11406 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11407 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11408 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11411 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11412 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11413 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11415 */
-  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, 11415);
-  }
-  /* parser/parser.nit:11417 */
-  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, 11417);
-  }
-  /* parser/parser.nit:11419 */
-  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, 11419);
-  }
-  /* parser/parser.nit:11421 */
-  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, 11421);
-  }
-  /* parser/parser.nit:11423 */
-  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, 11423);
-  }
-  /* parser/parser.nit:11425 */
-  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, 11425);
-  }
-  /* parser/parser.nit:11426 */
-  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:11439 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11440 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11440);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11445;
-  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:11447 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11448 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11449 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11450 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11453 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11454 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11455 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11456 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11458 */
-  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, 11458);
-  }
-  /* parser/parser.nit:11460 */
-  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, 11460);
-  }
-  /* parser/parser.nit:11462 */
-  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, 11462);
-  }
-  /* parser/parser.nit:11464 */
-  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, 11464);
-  }
-  /* parser/parser.nit:11466 */
-  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, 11466);
-  }
-  /* parser/parser.nit:11468 */
-  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, 11468);
-  }
-  /* parser/parser.nit:11470 */
-  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, 11470);
-  }
-  /* parser/parser.nit:11471 */
-  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:11484 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11485 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11485);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11490;
-  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:11492 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11493 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11494 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11495 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11498 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11499 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11500 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11502 */
-  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, 11502);
-  }
-  /* parser/parser.nit:11504 */
-  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, 11504);
-  }
-  /* parser/parser.nit:11506 */
-  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, 11506);
-  }
-  /* parser/parser.nit:11508 */
-  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, 11508);
-  }
-  /* parser/parser.nit:11510 */
-  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, 11510);
-  }
-  /* parser/parser.nit:11512 */
-  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, 11512);
-  }
-  /* parser/parser.nit:11513 */
-  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:11526 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11527 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11527);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11532;
-  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:11534 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11535 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11536 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11537 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11540 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11541 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11542 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11543 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11545 */
-  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, 11545);
-  }
-  /* parser/parser.nit:11547 */
-  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, 11547);
-  }
-  /* parser/parser.nit:11549 */
-  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, 11549);
-  }
-  /* parser/parser.nit:11551 */
-  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, 11551);
-  }
-  /* parser/parser.nit:11553 */
-  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, 11553);
-  }
-  /* parser/parser.nit:11555 */
-  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, 11555);
-  }
-  /* parser/parser.nit:11557 */
-  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, 11557);
-  }
-  /* parser/parser.nit:11558 */
-  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:11571 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11572 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11572);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11577;
-  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:11579 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11580 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11581 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11582 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11585 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11586 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11587 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11588 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11590 */
-  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, 11590);
-  }
-  /* parser/parser.nit:11592 */
-  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, 11592);
-  }
-  /* parser/parser.nit:11594 */
-  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, 11594);
-  }
-  /* parser/parser.nit:11596 */
-  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, 11596);
-  }
-  /* parser/parser.nit:11598 */
-  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, 11598);
-  }
-  /* parser/parser.nit:11600 */
-  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, 11600);
-  }
-  /* parser/parser.nit:11602 */
-  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, 11602);
-  }
-  /* parser/parser.nit:11603 */
-  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:11616 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11617 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11617);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11622;
-  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:11624 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11625 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11626 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11627 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11630 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11631 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11632 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11633 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11634 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11636 */
-  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, 11636);
-  }
-  /* parser/parser.nit:11638 */
-  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, 11638);
-  }
-  /* parser/parser.nit:11640 */
-  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, 11640);
-  }
-  /* parser/parser.nit:11642 */
-  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, 11642);
-  }
-  /* parser/parser.nit:11644 */
-  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, 11644);
-  }
-  /* parser/parser.nit:11646 */
-  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, 11646);
-  }
-  /* parser/parser.nit:11648 */
-  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, 11648);
-  }
-  /* parser/parser.nit:11650 */
-  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, 11650);
-  }
-  /* parser/parser.nit:11651 */
-  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:11664 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:11665 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11665);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11670;
-  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:11672 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11673 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11674 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11675 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11676 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11679 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11680 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11682 */
-  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, 11682);
-  }
-  /* parser/parser.nit:11684 */
-  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, 11684);
-  }
-  /* parser/parser.nit:11686 */
-  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, 11686);
-  }
-  /* parser/parser.nit:11688 */
-  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, 11688);
-  }
-  /* parser/parser.nit:11690 */
-  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, 11690);
-  }
-  /* parser/parser.nit:11692 */
-  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, 11692);
-  }
-  /* parser/parser.nit:11693 */
-  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:11706 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11707 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11707);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11712;
-  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:11714 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11715 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11716 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11717 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11718 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11721 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11722 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11723 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11725 */
-  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, 11725);
-  }
-  /* parser/parser.nit:11727 */
-  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, 11727);
-  }
-  /* parser/parser.nit:11729 */
-  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, 11729);
-  }
-  /* parser/parser.nit:11731 */
-  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, 11731);
-  }
-  /* parser/parser.nit:11733 */
-  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, 11733);
-  }
-  /* parser/parser.nit:11735 */
-  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, 11735);
-  }
-  /* parser/parser.nit:11737 */
-  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, 11737);
-  }
-  /* parser/parser.nit:11738 */
-  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:11751 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11752 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11752);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11757;
-  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:11759 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11760 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11761 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11762 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11763 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11766 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11767 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11768 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11770 */
-  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, 11770);
-  }
-  /* parser/parser.nit:11772 */
-  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, 11772);
-  }
-  /* parser/parser.nit:11774 */
-  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, 11774);
-  }
-  /* parser/parser.nit:11776 */
-  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, 11776);
-  }
-  /* parser/parser.nit:11778 */
-  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, 11778);
-  }
-  /* parser/parser.nit:11780 */
-  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, 11780);
-  }
-  /* parser/parser.nit:11782 */
-  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, 11782);
-  }
-  /* parser/parser.nit:11783 */
-  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:11796 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11797 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11797);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11802;
-  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:11804 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11805 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11806 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11807 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11808 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11811 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11812 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11813 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11814 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11816 */
-  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, 11816);
-  }
-  /* parser/parser.nit:11818 */
-  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, 11818);
-  }
-  /* parser/parser.nit:11820 */
-  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, 11820);
-  }
-  /* parser/parser.nit:11822 */
-  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, 11822);
-  }
-  /* parser/parser.nit:11824 */
-  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, 11824);
-  }
-  /* parser/parser.nit:11826 */
-  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, 11826);
-  }
-  /* parser/parser.nit:11828 */
-  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, 11828);
-  }
-  /* parser/parser.nit:11830 */
-  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, 11830);
-  }
-  /* parser/parser.nit:11831 */
-  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:11844 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11845 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11845);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11850;
-  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:11852 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11853 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11854 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11855 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11856 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11859 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11860 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11861 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11863 */
-  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, 11863);
-  }
-  /* parser/parser.nit:11865 */
-  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, 11865);
-  }
-  /* parser/parser.nit:11867 */
-  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, 11867);
-  }
-  /* parser/parser.nit:11869 */
-  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, 11869);
-  }
-  /* parser/parser.nit:11871 */
-  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, 11871);
-  }
-  /* parser/parser.nit:11873 */
-  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, 11873);
-  }
-  /* parser/parser.nit:11875 */
-  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, 11875);
-  }
-  /* parser/parser.nit:11876 */
-  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:11889 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11890 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11890);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11895;
-  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:11897 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11898 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11899 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11900 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11901 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11904 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11905 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11906 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11907 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11909 */
-  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, 11909);
-  }
-  /* parser/parser.nit:11911 */
-  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, 11911);
-  }
-  /* parser/parser.nit:11913 */
-  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, 11913);
-  }
-  /* parser/parser.nit:11915 */
-  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, 11915);
-  }
-  /* parser/parser.nit:11917 */
-  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, 11917);
-  }
-  /* parser/parser.nit:11919 */
-  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, 11919);
-  }
-  /* parser/parser.nit:11921 */
-  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, 11921);
-  }
-  /* parser/parser.nit:11923 */
-  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, 11923);
-  }
-  /* parser/parser.nit:11924 */
-  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:11937 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11938 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11938);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11943;
-  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:11945 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11946 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11947 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11948 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11949 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11952 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11953 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11954 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11955 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11957 */
-  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, 11957);
-  }
-  /* parser/parser.nit:11959 */
-  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, 11959);
-  }
-  /* parser/parser.nit:11961 */
-  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, 11961);
-  }
-  /* parser/parser.nit:11963 */
-  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, 11963);
-  }
-  /* parser/parser.nit:11965 */
-  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, 11965);
-  }
-  /* parser/parser.nit:11967 */
-  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, 11967);
-  }
-  /* parser/parser.nit:11969 */
-  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, 11969);
-  }
-  /* parser/parser.nit:11971 */
-  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, 11971);
-  }
-  /* parser/parser.nit:11972 */
-  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:11985 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:11986 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11986);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 11991;
-  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:11993 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:11994 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11995 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11996 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:11997 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12000 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12001 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12002 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12003 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12004 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12006 */
-  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, 12006);
-  }
-  /* parser/parser.nit:12008 */
-  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, 12008);
-  }
-  /* parser/parser.nit:12010 */
-  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, 12010);
-  }
-  /* parser/parser.nit:12012 */
-  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, 12012);
-  }
-  /* parser/parser.nit:12014 */
-  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, 12014);
-  }
-  /* parser/parser.nit:12016 */
-  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, 12016);
-  }
-  /* parser/parser.nit:12018 */
-  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, 12018);
-  }
-  /* parser/parser.nit:12020 */
-  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, 12020);
-  }
-  /* parser/parser.nit:12022 */
-  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, 12022);
-  }
-  /* parser/parser.nit:12023 */
-  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:12036 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:12037 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12037);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12042;
-  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:12044 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12045 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12046 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12047 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12048 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12049 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12050 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12052 */
-  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, 12052);
-  }
-  /* parser/parser.nit:12054 */
-  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, 12054);
-  }
-  /* parser/parser.nit:12056 */
-  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, 12056);
-  }
-  /* parser/parser.nit:12058 */
-  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, 12058);
-  }
-  /* parser/parser.nit:12060 */
-  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, 12060);
-  }
-  /* parser/parser.nit:12061 */
-  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:12071 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12072 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12072);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 12077;
-  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:12079 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12080 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12081 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12082 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12083 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12084 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12085 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12086 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12088 */
-  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, 12088);
-  }
-  /* parser/parser.nit:12090 */
-  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, 12090);
-  }
-  /* parser/parser.nit:12092 */
-  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, 12092);
-  }
-  /* parser/parser.nit:12094 */
-  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, 12094);
-  }
-  /* parser/parser.nit:12096 */
-  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, 12096);
-  }
-  /* parser/parser.nit:12098 */
-  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, 12098);
-  }
-  /* parser/parser.nit:12099 */
-  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:12109 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12110 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12110);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12115;
-  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:12117 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12118 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12119 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12120 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12121 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12122 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12123 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12124 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12126 */
-  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, 12126);
-  }
-  /* parser/parser.nit:12128 */
-  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, 12128);
-  }
-  /* parser/parser.nit:12130 */
-  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, 12130);
-  }
-  /* parser/parser.nit:12132 */
-  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, 12132);
-  }
-  /* parser/parser.nit:12134 */
-  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, 12134);
-  }
-  /* parser/parser.nit:12136 */
-  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, 12136);
-  }
-  /* parser/parser.nit:12137 */
-  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:12147 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12148 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12148);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12153;
-  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:12155 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12156 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12157 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12158 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12159 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12160 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12161 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12162 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12163 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12165 */
-  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, 12165);
-  }
-  /* parser/parser.nit:12167 */
-  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, 12167);
-  }
-  /* parser/parser.nit:12169 */
-  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, 12169);
-  }
-  /* parser/parser.nit:12171 */
-  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, 12171);
-  }
-  /* parser/parser.nit:12173 */
-  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, 12173);
-  }
-  /* parser/parser.nit:12175 */
-  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, 12175);
-  }
-  /* parser/parser.nit:12177 */
-  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, 12177);
-  }
-  /* parser/parser.nit:12178 */
-  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:12188 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12189 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12189);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12194;
-  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:12196 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12197 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12198 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12199 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12200 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12201 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12202 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12203 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12205 */
-  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, 12205);
-  }
-  /* parser/parser.nit:12207 */
-  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, 12207);
-  }
-  /* parser/parser.nit:12209 */
-  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, 12209);
-  }
-  /* parser/parser.nit:12211 */
-  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, 12211);
-  }
-  /* parser/parser.nit:12213 */
-  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, 12213);
-  }
-  /* parser/parser.nit:12215 */
-  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, 12215);
-  }
-  /* parser/parser.nit:12216 */
-  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:12226 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12227 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12227);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12232;
-  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:12234 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12235 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12236 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12237 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12238 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12239 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12240 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12241 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12242 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12244 */
-  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, 12244);
-  }
-  /* parser/parser.nit:12246 */
-  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, 12246);
-  }
-  /* parser/parser.nit:12248 */
-  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, 12248);
-  }
-  /* parser/parser.nit:12250 */
-  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, 12250);
-  }
-  /* parser/parser.nit:12252 */
-  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, 12252);
-  }
-  /* parser/parser.nit:12254 */
-  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, 12254);
-  }
-  /* parser/parser.nit:12256 */
-  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, 12256);
-  }
-  /* parser/parser.nit:12257 */
-  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:12267 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12268 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12268);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12273;
-  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:12275 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12276 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12277 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12278 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12279 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12280 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12281 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12282 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12283 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12285 */
-  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, 12285);
-  }
-  /* parser/parser.nit:12287 */
-  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, 12287);
-  }
-  /* parser/parser.nit:12289 */
-  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, 12289);
-  }
-  /* parser/parser.nit:12291 */
-  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, 12291);
-  }
-  /* parser/parser.nit:12293 */
-  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, 12293);
-  }
-  /* parser/parser.nit:12295 */
-  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, 12295);
-  }
-  /* parser/parser.nit:12297 */
-  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, 12297);
-  }
-  /* parser/parser.nit:12298 */
-  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:12308 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12309 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12309);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12314;
-  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:12316 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12317 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12318 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12319 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12320 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12321 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12322 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12323 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12324 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12325 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12327 */
-  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, 12327);
-  }
-  /* parser/parser.nit:12329 */
-  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, 12329);
-  }
-  /* parser/parser.nit:12331 */
-  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, 12331);
-  }
-  /* parser/parser.nit:12333 */
-  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, 12333);
-  }
-  /* parser/parser.nit:12335 */
-  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, 12335);
-  }
-  /* parser/parser.nit:12337 */
-  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, 12337);
-  }
-  /* parser/parser.nit:12339 */
-  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, 12339);
-  }
-  /* parser/parser.nit:12341 */
-  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, 12341);
-  }
-  /* parser/parser.nit:12342 */
-  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:12352 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12353 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12353);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12358;
-  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:12360 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12361 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12362 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12363 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12364 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12365 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12366 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12367 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12369 */
-  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, 12369);
-  }
-  /* parser/parser.nit:12371 */
-  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, 12371);
-  }
-  /* parser/parser.nit:12373 */
-  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, 12373);
-  }
-  /* parser/parser.nit:12375 */
-  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, 12375);
-  }
-  /* parser/parser.nit:12377 */
-  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, 12377);
-  }
-  /* parser/parser.nit:12378 */
-  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:12388 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12389 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12389);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12394;
-  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:12396 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12397 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12398 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12399 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12400 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12401 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12402 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12403 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12404 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12406 */
-  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, 12406);
-  }
-  /* parser/parser.nit:12408 */
-  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, 12408);
-  }
-  /* parser/parser.nit:12410 */
-  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, 12410);
-  }
-  /* parser/parser.nit:12412 */
-  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, 12412);
-  }
-  /* parser/parser.nit:12414 */
-  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, 12414);
-  }
-  /* parser/parser.nit:12416 */
-  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, 12416);
-  }
-  /* parser/parser.nit:12417 */
-  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:12427 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12428 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12428);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12433;
-  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:12435 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12436 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12437 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12438 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12439 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12440 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12441 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12442 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12443 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12445 */
-  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, 12445);
-  }
-  /* parser/parser.nit:12447 */
-  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, 12447);
-  }
-  /* parser/parser.nit:12449 */
-  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, 12449);
-  }
-  /* parser/parser.nit:12451 */
-  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, 12451);
-  }
-  /* parser/parser.nit:12453 */
-  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, 12453);
-  }
-  /* parser/parser.nit:12455 */
-  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, 12455);
-  }
-  /* parser/parser.nit:12456 */
-  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:12466 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12467 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12467);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12472;
-  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:12474 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12475 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12476 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12477 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12478 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12479 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12480 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12481 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12482 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12483 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12485 */
-  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, 12485);
-  }
-  /* parser/parser.nit:12487 */
-  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, 12487);
-  }
-  /* parser/parser.nit:12489 */
-  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, 12489);
-  }
-  /* parser/parser.nit:12491 */
-  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, 12491);
-  }
-  /* parser/parser.nit:12493 */
-  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, 12493);
-  }
-  /* parser/parser.nit:12495 */
-  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, 12495);
-  }
-  /* parser/parser.nit:12497 */
-  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, 12497);
-  }
-  /* parser/parser.nit:12498 */
-  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:12508 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12509 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12509);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12514;
-  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:12516 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12517 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12518 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12519 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12520 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12521 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12522 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12523 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12524 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12526 */
-  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, 12526);
-  }
-  /* parser/parser.nit:12528 */
-  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, 12528);
-  }
-  /* parser/parser.nit:12530 */
-  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, 12530);
-  }
-  /* parser/parser.nit:12532 */
-  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, 12532);
-  }
-  /* parser/parser.nit:12534 */
-  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, 12534);
-  }
-  /* parser/parser.nit:12536 */
-  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, 12536);
-  }
-  /* parser/parser.nit:12537 */
-  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:12547 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12548 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12548);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12553;
-  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:12555 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12556 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12557 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12558 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12559 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12560 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12561 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12562 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12563 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12564 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12566 */
-  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, 12566);
-  }
-  /* parser/parser.nit:12568 */
-  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, 12568);
-  }
-  /* parser/parser.nit:12570 */
-  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, 12570);
-  }
-  /* parser/parser.nit:12572 */
-  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, 12572);
-  }
-  /* parser/parser.nit:12574 */
-  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, 12574);
-  }
-  /* parser/parser.nit:12576 */
-  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, 12576);
-  }
-  /* parser/parser.nit:12578 */
-  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, 12578);
-  }
-  /* parser/parser.nit:12579 */
-  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:12589 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12590 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12590);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12595;
-  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:12597 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12598 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12599 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12600 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12601 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12602 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12603 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12604 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12605 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12606 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12608 */
-  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, 12608);
-  }
-  /* parser/parser.nit:12610 */
-  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, 12610);
-  }
-  /* parser/parser.nit:12612 */
-  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, 12612);
-  }
-  /* parser/parser.nit:12614 */
-  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, 12614);
-  }
-  /* parser/parser.nit:12616 */
-  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, 12616);
-  }
-  /* parser/parser.nit:12618 */
-  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, 12618);
-  }
-  /* parser/parser.nit:12620 */
-  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, 12620);
-  }
-  /* parser/parser.nit:12621 */
-  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:12631 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12632 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12632);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12637;
-  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:12639 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12640 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12641 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12642 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12643 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12644 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12645 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12646 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12647 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12648 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12649 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12651 */
-  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, 12651);
-  }
-  /* parser/parser.nit:12653 */
-  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, 12653);
-  }
-  /* parser/parser.nit:12655 */
-  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, 12655);
-  }
-  /* parser/parser.nit:12657 */
-  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, 12657);
-  }
-  /* parser/parser.nit:12659 */
-  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, 12659);
-  }
-  /* parser/parser.nit:12661 */
-  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, 12661);
-  }
-  /* parser/parser.nit:12663 */
-  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, 12663);
-  }
-  /* parser/parser.nit:12665 */
-  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, 12665);
-  }
-  /* parser/parser.nit:12666 */
-  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:12676 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12677 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12677);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12682;
-  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:12684 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12685 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12686 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12687 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12688 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12689 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12691 */
-  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, 12691);
-  }
-  /* parser/parser.nit:12693 */
-  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, 12693);
-  }
-  /* parser/parser.nit:12695 */
-  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, 12695);
-  }
-  /* parser/parser.nit:12697 */
-  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, 12697);
-  }
-  /* parser/parser.nit:12699 */
-  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, 12699);
-  }
-  /* parser/parser.nit:12700 */
-  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:12709 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12710 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12710);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12715;
-  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:12717 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12718 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12719 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12720 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12721 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12722 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12723 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12725 */
-  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, 12725);
-  }
-  /* parser/parser.nit:12727 */
-  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, 12727);
-  }
-  /* parser/parser.nit:12729 */
-  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, 12729);
-  }
-  /* parser/parser.nit:12731 */
-  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, 12731);
-  }
-  /* parser/parser.nit:12733 */
-  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, 12733);
-  }
-  /* parser/parser.nit:12735 */
-  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, 12735);
-  }
-  /* parser/parser.nit:12736 */
-  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:12745 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12746 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12746);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12751;
-  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:12753 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12754 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12755 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12756 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12757 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12758 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12759 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12761 */
-  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, 12761);
-  }
-  /* parser/parser.nit:12763 */
-  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, 12763);
-  }
-  /* parser/parser.nit:12765 */
-  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, 12765);
-  }
-  /* parser/parser.nit:12767 */
-  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, 12767);
-  }
-  /* parser/parser.nit:12769 */
-  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, 12769);
-  }
-  /* parser/parser.nit:12771 */
-  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, 12771);
-  }
-  /* parser/parser.nit:12772 */
-  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:12781 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12782 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12782);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12787;
-  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:12789 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12790 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12791 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12792 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12793 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12794 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12795 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12796 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12798 */
-  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, 12798);
-  }
-  /* parser/parser.nit:12800 */
-  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, 12800);
-  }
-  /* parser/parser.nit:12802 */
-  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, 12802);
-  }
-  /* parser/parser.nit:12804 */
-  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, 12804);
-  }
-  /* parser/parser.nit:12806 */
-  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, 12806);
-  }
-  /* parser/parser.nit:12808 */
-  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, 12808);
-  }
-  /* parser/parser.nit:12810 */
-  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, 12810);
-  }
-  /* parser/parser.nit:12811 */
-  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:12820 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12821 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12821);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12826;
-  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:12828 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12829 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12830 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12833 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12834 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12836 */
-  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, 12836);
-  }
-  /* parser/parser.nit:12838 */
-  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, 12838);
-  }
-  /* parser/parser.nit:12840 */
-  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, 12840);
-  }
-  /* parser/parser.nit:12842 */
-  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, 12842);
-  }
-  /* parser/parser.nit:12843 */
-  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:12854 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12855 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12855);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12860;
-  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:12862 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12863 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12864 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12867 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12868 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12869 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12871 */
-  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, 12871);
-  }
-  /* parser/parser.nit:12873 */
-  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, 12873);
-  }
-  /* parser/parser.nit:12875 */
-  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, 12875);
-  }
-  /* parser/parser.nit:12877 */
-  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, 12877);
-  }
-  /* parser/parser.nit:12879 */
-  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, 12879);
-  }
-  /* parser/parser.nit:12880 */
-  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:12891 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12892 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12892);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12897;
-  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:12899 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12900 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12901 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12904 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12905 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12906 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12908 */
-  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, 12908);
-  }
-  /* parser/parser.nit:12910 */
-  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, 12910);
-  }
-  /* parser/parser.nit:12912 */
-  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, 12912);
-  }
-  /* parser/parser.nit:12914 */
-  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, 12914);
-  }
-  /* parser/parser.nit:12916 */
-  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, 12916);
-  }
-  /* parser/parser.nit:12917 */
-  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:12928 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12929 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12929);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12934;
-  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:12936 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12937 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12938 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12939 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12940 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12941 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12942 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12943 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12944 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12946 */
-  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, 12946);
-  }
-  /* parser/parser.nit:12948 */
-  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, 12948);
-  }
-  /* parser/parser.nit:12950 */
-  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, 12950);
-  }
-  /* parser/parser.nit:12952 */
-  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, 12952);
-  }
-  /* parser/parser.nit:12954 */
-  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, 12954);
-  }
-  /* parser/parser.nit:12956 */
-  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, 12956);
-  }
-  /* parser/parser.nit:12957 */
-  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:12968 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:12969 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 12969);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 12974;
-  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:12976 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:12977 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12978 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12979 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12982 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12983 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:12985 */
-  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, 12985);
-  }
-  /* parser/parser.nit:12987 */
-  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, 12987);
-  }
-  /* parser/parser.nit:12989 */
-  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, 12989);
-  }
-  /* parser/parser.nit:12991 */
-  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, 12991);
-  }
-  /* parser/parser.nit:12993 */
-  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, 12993);
-  }
-  /* parser/parser.nit:12994 */
-  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:13005 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13006 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13006);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13011;
-  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:13013 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13014 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13015 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13016 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13019 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13020 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13021 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13023 */
-  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, 13023);
-  }
-  /* parser/parser.nit:13025 */
-  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, 13025);
-  }
-  /* parser/parser.nit:13027 */
-  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, 13027);
-  }
-  /* parser/parser.nit:13029 */
-  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, 13029);
-  }
-  /* parser/parser.nit:13031 */
-  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, 13031);
-  }
-  /* parser/parser.nit:13033 */
-  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, 13033);
-  }
-  /* parser/parser.nit:13034 */
-  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:13045 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13046 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13046);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13051;
-  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:13053 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13054 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13055 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13056 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13059 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13060 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13061 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13063 */
-  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, 13063);
-  }
-  /* parser/parser.nit:13065 */
-  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, 13065);
-  }
-  /* parser/parser.nit:13067 */
-  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, 13067);
-  }
-  /* parser/parser.nit:13069 */
-  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, 13069);
-  }
-  /* parser/parser.nit:13071 */
-  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, 13071);
-  }
-  /* parser/parser.nit:13073 */
-  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, 13073);
-  }
-  /* parser/parser.nit:13074 */
-  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:13085 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13086 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13086);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13091;
-  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:13093 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13094 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13095 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13096 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13099 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13100 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13101 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13102 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13104 */
-  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, 13104);
-  }
-  /* parser/parser.nit:13106 */
-  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, 13106);
-  }
-  /* parser/parser.nit:13108 */
-  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, 13108);
-  }
-  /* parser/parser.nit:13110 */
-  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, 13110);
-  }
-  /* parser/parser.nit:13112 */
-  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, 13112);
-  }
-  /* parser/parser.nit:13114 */
-  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, 13114);
-  }
-  /* parser/parser.nit:13116 */
-  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, 13116);
-  }
-  /* parser/parser.nit:13117 */
-  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:13128 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13129 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13129);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13134;
-  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:13136 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13137 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13138 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13139 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13142 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13143 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13145 */
-  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, 13145);
-  }
-  /* parser/parser.nit:13147 */
-  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, 13147);
-  }
-  /* parser/parser.nit:13149 */
-  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, 13149);
-  }
-  /* parser/parser.nit:13151 */
-  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, 13151);
-  }
-  /* parser/parser.nit:13153 */
-  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, 13153);
-  }
-  /* parser/parser.nit:13154 */
-  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:13165 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13166 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13166);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13171;
-  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:13173 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13174 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13175 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13176 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13179 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13180 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13181 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13183 */
-  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, 13183);
-  }
-  /* parser/parser.nit:13185 */
-  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, 13185);
-  }
-  /* parser/parser.nit:13187 */
-  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, 13187);
-  }
-  /* parser/parser.nit:13189 */
-  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, 13189);
-  }
-  /* parser/parser.nit:13191 */
-  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, 13191);
-  }
-  /* parser/parser.nit:13193 */
-  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, 13193);
-  }
-  /* parser/parser.nit:13194 */
-  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:13205 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13206 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13206);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13211;
-  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:13213 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13214 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13215 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13216 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13217 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13218 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13219 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13220 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13221 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13223 */
-  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, 13223);
-  }
-  /* parser/parser.nit:13225 */
-  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, 13225);
-  }
-  /* parser/parser.nit:13227 */
-  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, 13227);
-  }
-  /* parser/parser.nit:13229 */
-  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, 13229);
-  }
-  /* parser/parser.nit:13231 */
-  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, 13231);
-  }
-  /* parser/parser.nit:13233 */
-  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, 13233);
-  }
-  /* parser/parser.nit:13234 */
-  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:13245 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13246 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13246);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13251;
-  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:13253 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13254 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13255 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13256 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13259 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13260 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13261 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13262 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13264 */
-  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, 13264);
-  }
-  /* parser/parser.nit:13266 */
-  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, 13266);
-  }
-  /* parser/parser.nit:13268 */
-  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, 13268);
-  }
-  /* parser/parser.nit:13270 */
-  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, 13270);
-  }
-  /* parser/parser.nit:13272 */
-  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, 13272);
-  }
-  /* parser/parser.nit:13274 */
-  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, 13274);
-  }
-  /* parser/parser.nit:13276 */
-  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, 13276);
-  }
-  /* parser/parser.nit:13277 */
-  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:13288 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13289 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13289);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13294;
-  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:13296 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13297 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13298 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13299 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13300 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13303 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13304 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13306 */
-  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, 13306);
-  }
-  /* parser/parser.nit:13308 */
-  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, 13308);
-  }
-  /* parser/parser.nit:13310 */
-  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, 13310);
-  }
-  /* parser/parser.nit:13312 */
-  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, 13312);
-  }
-  /* parser/parser.nit:13314 */
-  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, 13314);
-  }
-  /* parser/parser.nit:13316 */
-  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, 13316);
-  }
-  /* parser/parser.nit:13317 */
-  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:13328 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13329 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13329);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13334;
-  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:13336 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13337 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13338 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13339 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13340 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13343 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13344 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13345 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13347 */
-  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, 13347);
-  }
-  /* parser/parser.nit:13349 */
-  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, 13349);
-  }
-  /* parser/parser.nit:13351 */
-  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, 13351);
-  }
-  /* parser/parser.nit:13353 */
-  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, 13353);
-  }
-  /* parser/parser.nit:13355 */
-  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, 13355);
-  }
-  /* parser/parser.nit:13357 */
-  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, 13357);
-  }
-  /* parser/parser.nit:13359 */
-  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, 13359);
-  }
-  /* parser/parser.nit:13360 */
-  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:13371 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13372 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13372);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13377;
-  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:13379 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13380 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13381 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13382 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13383 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13386 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13387 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13388 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13390 */
-  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, 13390);
-  }
-  /* parser/parser.nit:13392 */
-  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, 13392);
-  }
-  /* parser/parser.nit:13394 */
-  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, 13394);
-  }
-  /* parser/parser.nit:13396 */
-  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, 13396);
-  }
-  /* parser/parser.nit:13398 */
-  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, 13398);
-  }
-  /* parser/parser.nit:13400 */
-  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, 13400);
-  }
-  /* parser/parser.nit:13402 */
-  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, 13402);
-  }
-  /* parser/parser.nit:13403 */
-  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:13414 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13415 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13415);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13420;
-  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:13422 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13423 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13424 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13425 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13426 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13429 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13430 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13431 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13432 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13434 */
-  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, 13434);
-  }
-  /* parser/parser.nit:13436 */
-  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, 13436);
-  }
-  /* parser/parser.nit:13438 */
-  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, 13438);
-  }
-  /* parser/parser.nit:13440 */
-  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, 13440);
-  }
-  /* parser/parser.nit:13442 */
-  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, 13442);
-  }
-  /* parser/parser.nit:13444 */
-  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, 13444);
-  }
-  /* parser/parser.nit:13446 */
-  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, 13446);
-  }
-  /* parser/parser.nit:13448 */
-  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, 13448);
-  }
-  /* parser/parser.nit:13449 */
-  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:13460 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13461 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13461);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13466;
-  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:13468 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13469 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13470 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13471 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13474 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13475 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13477 */
-  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, 13477);
-  }
-  /* parser/parser.nit:13479 */
-  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, 13479);
-  }
-  /* parser/parser.nit:13481 */
-  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, 13481);
-  }
-  /* parser/parser.nit:13483 */
-  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, 13483);
-  }
-  /* parser/parser.nit:13485 */
-  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, 13485);
-  }
-  /* parser/parser.nit:13486 */
-  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:13497 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13498 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13498);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13503;
-  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:13505 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13506 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13507 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13508 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13511 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13512 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13513 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13515 */
-  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, 13515);
-  }
-  /* parser/parser.nit:13517 */
-  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, 13517);
-  }
-  /* parser/parser.nit:13519 */
-  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, 13519);
-  }
-  /* parser/parser.nit:13521 */
-  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, 13521);
-  }
-  /* parser/parser.nit:13523 */
-  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, 13523);
-  }
-  /* parser/parser.nit:13525 */
-  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, 13525);
-  }
-  /* parser/parser.nit:13526 */
-  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:13537 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13538 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13538);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13543;
-  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:13545 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13546 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13547 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13548 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13551 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13552 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13553 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13555 */
-  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, 13555);
-  }
-  /* parser/parser.nit:13557 */
-  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, 13557);
-  }
-  /* parser/parser.nit:13559 */
-  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, 13559);
-  }
-  /* parser/parser.nit:13561 */
-  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, 13561);
-  }
-  /* parser/parser.nit:13563 */
-  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, 13563);
-  }
-  /* parser/parser.nit:13565 */
-  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, 13565);
-  }
-  /* parser/parser.nit:13566 */
-  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:13577 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13578 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13578);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13583;
-  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:13585 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13586 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13587 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13588 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13591 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13592 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13593 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13594 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13596 */
-  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, 13596);
-  }
-  /* parser/parser.nit:13598 */
-  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, 13598);
-  }
-  /* parser/parser.nit:13600 */
-  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, 13600);
-  }
-  /* parser/parser.nit:13602 */
-  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, 13602);
-  }
-  /* parser/parser.nit:13604 */
-  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, 13604);
-  }
-  /* parser/parser.nit:13606 */
-  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, 13606);
-  }
-  /* parser/parser.nit:13608 */
-  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, 13608);
-  }
-  /* parser/parser.nit:13609 */
-  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:13620 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13621 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13621);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13626;
-  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:13628 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13629 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13630 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13631 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13632 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13635 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13636 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13638 */
-  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, 13638);
-  }
-  /* parser/parser.nit:13640 */
-  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, 13640);
-  }
-  /* parser/parser.nit:13642 */
-  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, 13642);
-  }
-  /* parser/parser.nit:13644 */
-  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, 13644);
-  }
-  /* parser/parser.nit:13646 */
-  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, 13646);
-  }
-  /* parser/parser.nit:13648 */
-  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, 13648);
-  }
-  /* parser/parser.nit:13649 */
-  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:13660 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13661 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13661);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13666;
-  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:13668 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13669 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13670 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13671 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13672 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13675 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13676 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13677 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13679 */
-  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, 13679);
-  }
-  /* parser/parser.nit:13681 */
-  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, 13681);
-  }
-  /* parser/parser.nit:13683 */
-  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, 13683);
-  }
-  /* parser/parser.nit:13685 */
-  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, 13685);
-  }
-  /* parser/parser.nit:13687 */
-  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, 13687);
-  }
-  /* parser/parser.nit:13689 */
-  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, 13689);
-  }
-  /* parser/parser.nit:13691 */
-  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, 13691);
-  }
-  /* parser/parser.nit:13692 */
-  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:13703 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13704 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13704);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13709;
-  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:13711 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13712 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13713 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13714 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13715 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13718 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13719 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13720 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13722 */
-  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, 13722);
-  }
-  /* parser/parser.nit:13724 */
-  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, 13724);
-  }
-  /* parser/parser.nit:13726 */
-  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, 13726);
-  }
-  /* parser/parser.nit:13728 */
-  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, 13728);
-  }
-  /* parser/parser.nit:13730 */
-  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, 13730);
-  }
-  /* parser/parser.nit:13732 */
-  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, 13732);
-  }
-  /* parser/parser.nit:13734 */
-  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, 13734);
-  }
-  /* parser/parser.nit:13735 */
-  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:13746 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13747 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13747);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13752;
-  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:13754 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13755 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13756 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13757 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13758 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13761 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13762 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13763 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13764 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13766 */
-  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, 13766);
-  }
-  /* parser/parser.nit:13768 */
-  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, 13768);
-  }
-  /* parser/parser.nit:13770 */
-  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, 13770);
-  }
-  /* parser/parser.nit:13772 */
-  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, 13772);
-  }
-  /* parser/parser.nit:13774 */
-  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, 13774);
-  }
-  /* parser/parser.nit:13776 */
-  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, 13776);
-  }
-  /* parser/parser.nit:13778 */
-  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, 13778);
-  }
-  /* parser/parser.nit:13780 */
-  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, 13780);
-  }
-  /* parser/parser.nit:13781 */
-  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:13792 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13793 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13793);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13798;
-  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:13800 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13801 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13802 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13803 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13804 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13807 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13808 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13810 */
-  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, 13810);
-  }
-  /* parser/parser.nit:13812 */
-  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, 13812);
-  }
-  /* parser/parser.nit:13814 */
-  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, 13814);
-  }
-  /* parser/parser.nit:13816 */
-  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, 13816);
-  }
-  /* parser/parser.nit:13818 */
-  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, 13818);
-  }
-  /* parser/parser.nit:13820 */
-  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, 13820);
-  }
-  /* parser/parser.nit:13821 */
-  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:13832 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13833 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13833);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13838;
-  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:13840 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13841 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13842 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13843 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13844 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13845 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13846 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13847 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13848 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13849 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13851 */
-  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, 13851);
-  }
-  /* parser/parser.nit:13853 */
-  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, 13853);
-  }
-  /* parser/parser.nit:13855 */
-  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, 13855);
-  }
-  /* parser/parser.nit:13857 */
-  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, 13857);
-  }
-  /* parser/parser.nit:13859 */
-  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, 13859);
-  }
-  /* parser/parser.nit:13861 */
-  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, 13861);
-  }
-  /* parser/parser.nit:13863 */
-  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, 13863);
-  }
-  /* parser/parser.nit:13864 */
-  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:13875 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13876 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13876);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13881;
-  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:13883 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13884 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13885 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13886 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13887 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13890 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13891 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13892 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13894 */
-  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, 13894);
-  }
-  /* parser/parser.nit:13896 */
-  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, 13896);
-  }
-  /* parser/parser.nit:13898 */
-  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, 13898);
-  }
-  /* parser/parser.nit:13900 */
-  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, 13900);
-  }
-  /* parser/parser.nit:13902 */
-  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, 13902);
-  }
-  /* parser/parser.nit:13904 */
-  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, 13904);
-  }
-  /* parser/parser.nit:13906 */
-  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, 13906);
-  }
-  /* parser/parser.nit:13907 */
-  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:13918 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13919 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13919);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13924;
-  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:13926 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13927 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13928 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13929 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13930 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13931 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13932 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13933 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13934 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13935 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13936 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13938 */
-  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, 13938);
-  }
-  /* parser/parser.nit:13940 */
-  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, 13940);
-  }
-  /* parser/parser.nit:13942 */
-  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, 13942);
-  }
-  /* parser/parser.nit:13944 */
-  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, 13944);
-  }
-  /* parser/parser.nit:13946 */
-  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, 13946);
-  }
-  /* parser/parser.nit:13948 */
-  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, 13948);
-  }
-  /* parser/parser.nit:13950 */
-  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, 13950);
-  }
-  /* parser/parser.nit:13952 */
-  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, 13952);
-  }
-  /* parser/parser.nit:13953 */
-  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:13964 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:13965 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 13965);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 13970;
-  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:13972 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:13973 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13974 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13975 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13976 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13977 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13980 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13981 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:13983 */
-  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, 13983);
-  }
-  /* parser/parser.nit:13985 */
-  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, 13985);
-  }
-  /* parser/parser.nit:13987 */
-  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, 13987);
-  }
-  /* parser/parser.nit:13989 */
-  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, 13989);
-  }
-  /* parser/parser.nit:13991 */
-  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, 13991);
-  }
-  /* parser/parser.nit:13993 */
-  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, 13993);
-  }
-  /* parser/parser.nit:13995 */
-  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, 13995);
-  }
-  /* parser/parser.nit:13996 */
-  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:14007 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14008 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14008);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14013;
-  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:14015 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14016 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14017 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14018 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14019 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14020 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14021 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14022 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14023 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14024 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14025 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14027 */
-  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, 14027);
-  }
-  /* parser/parser.nit:14029 */
-  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, 14029);
-  }
-  /* parser/parser.nit:14031 */
-  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, 14031);
-  }
-  /* parser/parser.nit:14033 */
-  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, 14033);
-  }
-  /* parser/parser.nit:14035 */
-  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, 14035);
-  }
-  /* parser/parser.nit:14037 */
-  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, 14037);
-  }
-  /* parser/parser.nit:14039 */
-  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, 14039);
-  }
-  /* parser/parser.nit:14041 */
-  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, 14041);
-  }
-  /* parser/parser.nit:14042 */
-  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:14053 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14054 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14054);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14059;
-  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:14061 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14062 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14063 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14064 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14065 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14066 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14069 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14070 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14071 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14073 */
-  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, 14073);
-  }
-  /* parser/parser.nit:14075 */
-  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, 14075);
-  }
-  /* parser/parser.nit:14077 */
-  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, 14077);
-  }
-  /* parser/parser.nit:14079 */
-  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, 14079);
-  }
-  /* parser/parser.nit:14081 */
-  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, 14081);
-  }
-  /* parser/parser.nit:14083 */
-  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, 14083);
-  }
-  /* parser/parser.nit:14085 */
-  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, 14085);
-  }
-  /* parser/parser.nit:14087 */
-  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, 14087);
-  }
-  /* parser/parser.nit:14088 */
-  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:14099 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14100 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14100);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14105;
-  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:14107 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14108 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14109 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14110 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14111 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14112 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14115 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14116 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14117 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14118 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14120 */
-  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, 14120);
-  }
-  /* parser/parser.nit:14122 */
-  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, 14122);
-  }
-  /* parser/parser.nit:14124 */
-  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, 14124);
-  }
-  /* parser/parser.nit:14126 */
-  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, 14126);
-  }
-  /* parser/parser.nit:14128 */
-  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, 14128);
-  }
-  /* parser/parser.nit:14130 */
-  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, 14130);
-  }
-  /* parser/parser.nit:14132 */
-  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, 14132);
-  }
-  /* parser/parser.nit:14134 */
-  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, 14134);
-  }
-  /* parser/parser.nit:14136 */
-  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, 14136);
-  }
-  /* parser/parser.nit:14137 */
-  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:14148 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14149 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14149);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14154;
-  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:14156 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14157 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14158 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14159 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14160 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14161 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14163 */
-  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, 14163);
-  }
-  /* parser/parser.nit:14165 */
-  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, 14165);
-  }
-  /* parser/parser.nit:14167 */
-  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, 14167);
-  }
-  /* parser/parser.nit:14169 */
-  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, 14169);
-  }
-  /* parser/parser.nit:14171 */
-  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, 14171);
-  }
-  /* parser/parser.nit:14172 */
-  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:14183 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14184 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14184);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14189;
-  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:14191 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14192 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14193 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14194 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14195 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14196 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14197 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14199 */
-  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, 14199);
-  }
-  /* parser/parser.nit:14201 */
-  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, 14201);
-  }
-  /* parser/parser.nit:14203 */
-  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, 14203);
-  }
-  /* parser/parser.nit:14205 */
-  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, 14205);
-  }
-  /* parser/parser.nit:14207 */
-  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, 14207);
-  }
-  /* parser/parser.nit:14209 */
-  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, 14209);
-  }
-  /* parser/parser.nit:14210 */
-  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:14221 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14222 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14222);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14227;
-  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:14229 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14230 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14231 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14232 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14233 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14234 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14235 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14237 */
-  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, 14237);
-  }
-  /* parser/parser.nit:14239 */
-  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, 14239);
-  }
-  /* parser/parser.nit:14241 */
-  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, 14241);
-  }
-  /* parser/parser.nit:14243 */
-  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, 14243);
-  }
-  /* parser/parser.nit:14245 */
-  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, 14245);
-  }
-  /* parser/parser.nit:14247 */
-  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, 14247);
-  }
-  /* parser/parser.nit:14248 */
-  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:14259 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14260 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14260);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14265;
-  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:14267 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14268 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14269 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14270 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14271 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14272 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14273 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14274 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14276 */
-  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, 14276);
-  }
-  /* parser/parser.nit:14278 */
-  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, 14278);
-  }
-  /* parser/parser.nit:14280 */
-  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, 14280);
-  }
-  /* parser/parser.nit:14282 */
-  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, 14282);
-  }
-  /* parser/parser.nit:14284 */
-  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, 14284);
-  }
-  /* parser/parser.nit:14286 */
-  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, 14286);
-  }
-  /* parser/parser.nit:14288 */
-  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, 14288);
-  }
-  /* parser/parser.nit:14289 */
-  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:14300 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14301 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14301);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14306;
-  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:14308 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14309 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14310 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14311 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14312 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14313 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14314 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14316 */
-  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, 14316);
-  }
-  /* parser/parser.nit:14318 */
-  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, 14318);
-  }
-  /* parser/parser.nit:14320 */
-  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, 14320);
-  }
-  /* parser/parser.nit:14322 */
-  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, 14322);
-  }
-  /* parser/parser.nit:14324 */
-  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, 14324);
-  }
-  /* parser/parser.nit:14326 */
-  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, 14326);
-  }
-  /* parser/parser.nit:14327 */
-  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:14338 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14339 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14339);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14344;
-  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:14346 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14347 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14348 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14349 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14350 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14351 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14352 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14353 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14355 */
-  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, 14355);
-  }
-  /* parser/parser.nit:14357 */
-  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, 14357);
-  }
-  /* parser/parser.nit:14359 */
-  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, 14359);
-  }
-  /* parser/parser.nit:14361 */
-  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, 14361);
-  }
-  /* parser/parser.nit:14363 */
-  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, 14363);
-  }
-  /* parser/parser.nit:14365 */
-  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, 14365);
-  }
-  /* parser/parser.nit:14367 */
-  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, 14367);
-  }
-  /* parser/parser.nit:14368 */
-  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:14379 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14380 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14380);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14385;
-  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:14387 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14388 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14389 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14390 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14391 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14392 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14393 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14394 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14396 */
-  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, 14396);
-  }
-  /* parser/parser.nit:14398 */
-  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, 14398);
-  }
-  /* parser/parser.nit:14400 */
-  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, 14400);
-  }
-  /* parser/parser.nit:14402 */
-  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, 14402);
-  }
-  /* parser/parser.nit:14404 */
-  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, 14404);
-  }
-  /* parser/parser.nit:14406 */
-  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, 14406);
-  }
-  /* parser/parser.nit:14408 */
-  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, 14408);
-  }
-  /* parser/parser.nit:14409 */
-  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:14420 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14421 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14421);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14426;
-  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:14428 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14429 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14430 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14431 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14432 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14433 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14434 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14435 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14436 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14438 */
-  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, 14438);
-  }
-  /* parser/parser.nit:14440 */
-  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, 14440);
-  }
-  /* parser/parser.nit:14442 */
-  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, 14442);
-  }
-  /* parser/parser.nit:14444 */
-  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, 14444);
-  }
-  /* parser/parser.nit:14446 */
-  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, 14446);
-  }
-  /* parser/parser.nit:14448 */
-  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, 14448);
-  }
-  /* parser/parser.nit:14450 */
-  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, 14450);
-  }
-  /* parser/parser.nit:14452 */
-  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, 14452);
-  }
-  /* parser/parser.nit:14453 */
-  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:14464 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14465 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14465);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14470;
-  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:14472 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14473 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14474 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14475 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14476 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14477 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14478 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14480 */
-  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, 14480);
-  }
-  /* parser/parser.nit:14482 */
-  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, 14482);
-  }
-  /* parser/parser.nit:14484 */
-  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, 14484);
-  }
-  /* parser/parser.nit:14486 */
-  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, 14486);
-  }
-  /* parser/parser.nit:14488 */
-  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, 14488);
-  }
-  /* parser/parser.nit:14490 */
-  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, 14490);
-  }
-  /* parser/parser.nit:14491 */
-  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:14502 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14503 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14503);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14508;
-  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:14510 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14511 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14512 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14513 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14514 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14515 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14516 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14517 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14519 */
-  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, 14519);
-  }
-  /* parser/parser.nit:14521 */
-  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, 14521);
-  }
-  /* parser/parser.nit:14523 */
-  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, 14523);
-  }
-  /* parser/parser.nit:14525 */
-  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, 14525);
-  }
-  /* parser/parser.nit:14527 */
-  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, 14527);
-  }
-  /* parser/parser.nit:14529 */
-  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, 14529);
-  }
-  /* parser/parser.nit:14531 */
-  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, 14531);
-  }
-  /* parser/parser.nit:14532 */
-  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:14543 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14544 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14544);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14549;
-  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:14551 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14552 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14553 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14554 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14555 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14556 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14557 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14558 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14560 */
-  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, 14560);
-  }
-  /* parser/parser.nit:14562 */
-  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, 14562);
-  }
-  /* parser/parser.nit:14564 */
-  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, 14564);
-  }
-  /* parser/parser.nit:14566 */
-  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, 14566);
-  }
-  /* parser/parser.nit:14568 */
-  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, 14568);
-  }
-  /* parser/parser.nit:14570 */
-  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, 14570);
-  }
-  /* parser/parser.nit:14572 */
-  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, 14572);
-  }
-  /* parser/parser.nit:14573 */
-  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:14584 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14585 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14585);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14590;
-  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:14592 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14593 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14594 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14595 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14596 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14597 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14598 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14599 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14600 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14602 */
-  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, 14602);
-  }
-  /* parser/parser.nit:14604 */
-  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, 14604);
-  }
-  /* parser/parser.nit:14606 */
-  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, 14606);
-  }
-  /* parser/parser.nit:14608 */
-  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, 14608);
-  }
-  /* parser/parser.nit:14610 */
-  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, 14610);
-  }
-  /* parser/parser.nit:14612 */
-  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, 14612);
-  }
-  /* parser/parser.nit:14614 */
-  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, 14614);
-  }
-  /* parser/parser.nit:14616 */
-  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, 14616);
-  }
-  /* parser/parser.nit:14617 */
-  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:14628 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14629 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14629);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14634;
-  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:14636 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14637 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14638 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14639 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14640 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14641 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14642 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14643 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14645 */
-  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, 14645);
-  }
-  /* parser/parser.nit:14647 */
-  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, 14647);
-  }
-  /* parser/parser.nit:14649 */
-  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, 14649);
-  }
-  /* parser/parser.nit:14651 */
-  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, 14651);
-  }
-  /* parser/parser.nit:14653 */
-  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, 14653);
-  }
-  /* parser/parser.nit:14655 */
-  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, 14655);
-  }
-  /* parser/parser.nit:14657 */
-  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, 14657);
-  }
-  /* parser/parser.nit:14658 */
-  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:14669 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14670 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14670);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14675;
-  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:14677 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14678 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14679 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14680 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14681 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14682 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14683 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14684 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14685 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14687 */
-  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, 14687);
-  }
-  /* parser/parser.nit:14689 */
-  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, 14689);
-  }
-  /* parser/parser.nit:14691 */
-  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, 14691);
-  }
-  /* parser/parser.nit:14693 */
-  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, 14693);
-  }
-  /* parser/parser.nit:14695 */
-  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, 14695);
-  }
-  /* parser/parser.nit:14697 */
-  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, 14697);
-  }
-  /* parser/parser.nit:14699 */
-  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, 14699);
-  }
-  /* parser/parser.nit:14701 */
-  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, 14701);
-  }
-  /* parser/parser.nit:14702 */
-  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:14713 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14714 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14714);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14719;
-  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:14721 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14722 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14723 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14724 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14725 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14726 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14727 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14728 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14729 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14731 */
-  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, 14731);
-  }
-  /* parser/parser.nit:14733 */
-  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, 14733);
-  }
-  /* parser/parser.nit:14735 */
-  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, 14735);
-  }
-  /* parser/parser.nit:14737 */
-  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, 14737);
-  }
-  /* parser/parser.nit:14739 */
-  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, 14739);
-  }
-  /* parser/parser.nit:14741 */
-  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, 14741);
-  }
-  /* parser/parser.nit:14743 */
-  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, 14743);
-  }
-  /* parser/parser.nit:14745 */
-  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, 14745);
-  }
-  /* parser/parser.nit:14746 */
-  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:14757 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14758 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14758);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14763;
-  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:14765 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14766 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14767 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14768 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14769 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14770 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14771 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14772 */
-  fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14773 */
-  fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14774 */
-  fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14776 */
-  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, 14776);
-  }
-  /* parser/parser.nit:14778 */
-  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, 14778);
-  }
-  /* parser/parser.nit:14780 */
-  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, 14780);
-  }
-  /* parser/parser.nit:14782 */
-  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, 14782);
-  }
-  /* parser/parser.nit:14784 */
-  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, 14784);
-  }
-  /* parser/parser.nit:14786 */
-  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, 14786);
-  }
-  /* parser/parser.nit:14788 */
-  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, 14788);
-  }
-  /* parser/parser.nit:14790 */
-  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, 14790);
-  }
-  /* parser/parser.nit:14792 */
-  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, 14792);
-  }
-  /* parser/parser.nit:14793 */
-  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:14804 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14805 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14805);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14810;
-  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:14812 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14813 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14814 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14816 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14817 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14817);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14822;
-  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:14824 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14825 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14826 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14827 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14828 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14830 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14831 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14831);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14836;
-  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:14838 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14839 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14840 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14841 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14843 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14844 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14844);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14849;
-  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:14851 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14852 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14854 */
-  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, 14854);
-  }
-  /* parser/parser.nit:14855 */
-  fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14859 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14860 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14860);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14865;
-  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:14867 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14868 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14869 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14871 */
-  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, 14871);
-  }
-  /* parser/parser.nit:14873 */
-  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, 14873);
-  }
-  /* parser/parser.nit:14874 */
-  fra.me.REG[3] = NEW_AReadAble_parser___parser_prod___AReadAble___init_areadable(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:14878 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14879 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14879);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14884;
-  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:14886 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14887 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14889 */
-  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, 14889);
-  }
-  /* parser/parser.nit:14890 */
-  fra.me.REG[3] = NEW_AWriteAble_parser___parser_prod___AWriteAble___init_awriteable(NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:14895 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14896 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14896);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14901;
-  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:14903 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14904 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14905 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14907 */
-  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, 14907);
-  }
-  /* parser/parser.nit:14909 */
-  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, 14909);
-  }
-  /* parser/parser.nit:14910 */
-  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:14915 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14916 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14916);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14921;
-  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:14923 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14924 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14925 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14927 */
-  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, 14927);
-  }
-  /* parser/parser.nit:14929 */
-  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, 14929);
-  }
-  /* parser/parser.nit:14930 */
-  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:14935 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14936 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14936);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14941;
-  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:14943 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14944 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14945 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14946 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14948 */
-  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, 14948);
-  }
-  /* parser/parser.nit:14950 */
-  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, 14950);
-  }
-  /* parser/parser.nit:14952 */
-  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, 14952);
-  }
-  /* parser/parser.nit:14953 */
-  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:14958 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14959 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14959);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14964;
-  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:14966 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14967 */
-  fra.me.REG[3] = NEW_APublicVisibility_parser___parser_prod___APublicVisibility___init_apublicvisibility();
-  /* parser/parser.nit:14968 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14969 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14969);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14974;
-  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:14976 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14977 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14978 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14980 */
-  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, 14980);
-  }
-  /* parser/parser.nit:14981 */
-  fra.me.REG[3] = NEW_APrivateVisibility_parser___parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[3]);
-  /* parser/parser.nit:14984 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:14985 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 14985);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 14990;
-  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:14992 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:14993 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14994 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:14996 */
-  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, 14996);
-  }
-  /* parser/parser.nit:14997 */
-  fra.me.REG[3] = NEW_AProtectedVisibility_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[3]);
-  /* parser/parser.nit:15000 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15001 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15001);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15006;
-  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:15008 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15009 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15010 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15012 */
-  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, 15012);
-  }
-  /* parser/parser.nit:15013 */
-  fra.me.REG[3] = NEW_AIntrudeVisibility_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[3]);
-  /* parser/parser.nit:15016 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15017 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15017);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15022;
-  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:15024 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15025 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15027 */
-  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, 15027);
-  }
-  /* parser/parser.nit:15028 */
-  fra.me.REG[3] = NEW_AIdMethid_parser___parser_prod___AIdMethid___init_aidmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15031 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15032 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15032);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15037;
-  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:15039 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15040 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15042 */
-  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, 15042);
-  }
-  /* parser/parser.nit:15043 */
-  fra.me.REG[3] = NEW_APlusMethid_parser___parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15046 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15047 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15047);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 15052;
-  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:15054 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15055 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15057 */
-  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, 15057);
-  }
-  /* parser/parser.nit:15058 */
-  fra.me.REG[3] = NEW_AMinusMethid_parser___parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15061 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15062 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15062);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15067;
-  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:15069 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15070 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15072 */
-  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, 15072);
-  }
-  /* parser/parser.nit:15073 */
-  fra.me.REG[3] = NEW_AStarMethid_parser___parser_prod___AStarMethid___init_astarmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15076 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15077 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15077);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15082;
-  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:15084 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15085 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15087 */
-  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, 15087);
-  }
-  /* parser/parser.nit:15088 */
-  fra.me.REG[3] = NEW_ASlashMethid_parser___parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15091 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15092 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15092);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15097;
-  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:15099 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15100 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15102 */
-  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, 15102);
-  }
-  /* parser/parser.nit:15103 */
-  fra.me.REG[3] = NEW_APercentMethid_parser___parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15106 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15107 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15107);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15112;
-  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:15114 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15115 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15117 */
-  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, 15117);
-  }
-  /* parser/parser.nit:15118 */
-  fra.me.REG[3] = NEW_AEqMethid_parser___parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15121 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15122 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15122);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15127;
-  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:15129 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15130 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15132 */
-  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, 15132);
-  }
-  /* parser/parser.nit:15133 */
-  fra.me.REG[3] = NEW_ANeMethid_parser___parser_prod___ANeMethid___init_anemethid(fra.me.REG[3]);
-  /* parser/parser.nit:15136 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15137 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15137);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15142;
-  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:15144 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15145 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15147 */
-  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, 15147);
-  }
-  /* parser/parser.nit:15148 */
-  fra.me.REG[3] = NEW_ALeMethid_parser___parser_prod___ALeMethid___init_alemethid(fra.me.REG[3]);
-  /* parser/parser.nit:15151 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15152 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15152);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 15157;
-  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:15159 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15160 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15162 */
-  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, 15162);
-  }
-  /* parser/parser.nit:15163 */
-  fra.me.REG[3] = NEW_AGeMethid_parser___parser_prod___AGeMethid___init_agemethid(fra.me.REG[3]);
-  /* parser/parser.nit:15166 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15167 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15167);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15172;
-  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:15174 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15175 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15177 */
-  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, 15177);
-  }
-  /* parser/parser.nit:15178 */
-  fra.me.REG[3] = NEW_ALtMethid_parser___parser_prod___ALtMethid___init_altmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15181 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15182 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15182);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15187;
-  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:15189 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15190 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15192 */
-  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, 15192);
-  }
-  /* parser/parser.nit:15193 */
-  fra.me.REG[3] = NEW_AGtMethid_parser___parser_prod___AGtMethid___init_agtmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15196 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15197 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15197);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15202;
-  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:15204 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15205 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15207 */
-  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, 15207);
-  }
-  /* parser/parser.nit:15208 */
-  fra.me.REG[3] = NEW_ALlMethid_parser___parser_prod___ALlMethid___init_allmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15211 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15212 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15212);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15217;
-  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:15219 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15220 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15222 */
-  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, 15222);
-  }
-  /* parser/parser.nit:15223 */
-  fra.me.REG[3] = NEW_AGgMethid_parser___parser_prod___AGgMethid___init_aggmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15226 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15227 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15227);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15232;
-  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:15234 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15235 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15236 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15238 */
-  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, 15238);
-  }
-  /* parser/parser.nit:15240 */
-  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, 15240);
-  }
-  /* parser/parser.nit:15241 */
-  fra.me.REG[3] = NEW_ABraMethid_parser___parser_prod___ABraMethid___init_abramethid(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:15245 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15246 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15246);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15251;
-  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:15253 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15254 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15256 */
-  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, 15256);
-  }
-  /* parser/parser.nit:15257 */
-  fra.me.REG[3] = NEW_AStarshipMethid_parser___parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[3]);
-  /* parser/parser.nit:15260 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15261 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15261);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15266;
-  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:15268 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15269 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15270 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15272 */
-  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, 15272);
-  }
-  /* parser/parser.nit:15274 */
-  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, 15274);
-  }
-  /* parser/parser.nit:15275 */
-  fra.me.REG[3] = NEW_AAssignMethid_parser___parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:15279 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15280 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15280);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15285;
-  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:15287 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15288 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15289 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15290 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15292 */
-  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, 15292);
-  }
-  /* parser/parser.nit:15294 */
-  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, 15294);
-  }
-  /* parser/parser.nit:15296 */
-  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, 15296);
-  }
-  /* parser/parser.nit:15297 */
-  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:15302 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15303 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15303);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15308;
-  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:15310 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15311 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15312 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15313 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15314 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15315 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15316 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15317 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15319 */
-  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, 15319);
-  }
-  /* parser/parser.nit:15321 */
-  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, 15321);
-  }
-  /* parser/parser.nit:15323 */
-  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, 15323);
-  }
-  /* parser/parser.nit:15324 */
-  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:15331 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15332 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15332);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15337;
-  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:15339 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15340 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15341 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15342 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15343 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15344 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15345 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15346 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15347 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15349 */
-  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, 15349);
-  }
-  /* parser/parser.nit:15351 */
-  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, 15351);
-  }
-  /* parser/parser.nit:15352 */
-  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:15354 */
-  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, 15354);
-  }
-  /* parser/parser.nit:15356 */
-  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, 15356);
-  }
-  /* parser/parser.nit:15357 */
-  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:15364 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15365 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15365);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15370;
-  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:15372 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15373 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15374 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15375 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15376 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15377 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15378 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15379 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15380 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15382 */
-  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, 15382);
-  }
-  /* parser/parser.nit:15384 */
-  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, 15384);
-  }
-  /* parser/parser.nit:15386 */
-  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, 15386);
-  }
-  /* parser/parser.nit:15388 */
-  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, 15388);
-  }
-  /* parser/parser.nit:15389 */
-  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:15390 */
-  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:15397 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15398 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15398);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15403;
-  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:15405 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15406 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15407 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15408 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15409 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15410 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15411 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15412 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15413 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15414 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15416 */
-  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, 15416);
-  }
-  /* parser/parser.nit:15418 */
-  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, 15418);
-  }
-  /* parser/parser.nit:15419 */
-  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:15421 */
-  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, 15421);
-  }
-  /* parser/parser.nit:15423 */
-  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, 15423);
-  }
-  /* parser/parser.nit:15425 */
-  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, 15425);
-  }
-  /* parser/parser.nit:15426 */
-  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:15427 */
-  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:15434 */
-  fra.me.REG[2] = fra.me.REG[9];
-  /* parser/parser.nit:15435 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15435);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15440;
-  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:15442 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15443 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15444 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15445 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15446 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15447 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15448 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15450 */
-  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, 15450);
-  }
-  /* parser/parser.nit:15452 */
-  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, 15452);
-  }
-  /* parser/parser.nit:15453 */
-  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:15460 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:15461 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15461);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15466;
-  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:15468 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15469 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15470 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15471 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15472 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15473 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15474 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15475 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15477 */
-  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, 15477);
-  }
-  /* parser/parser.nit:15479 */
-  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, 15479);
-  }
-  /* parser/parser.nit:15480 */
-  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:15482 */
-  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, 15482);
-  }
-  /* parser/parser.nit:15483 */
-  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:15490 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15491 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15491);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15496;
-  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:15498 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15499 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15500 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15501 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15502 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15503 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15504 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15505 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15507 */
-  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, 15507);
-  }
-  /* parser/parser.nit:15509 */
-  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, 15509);
-  }
-  /* parser/parser.nit:15511 */
-  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, 15511);
-  }
-  /* parser/parser.nit:15512 */
-  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:15513 */
-  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:15520 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15521 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15521);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15526;
-  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:15528 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15529 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15530 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15531 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15532 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15533 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15534 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15535 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15536 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15538 */
-  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, 15538);
-  }
-  /* parser/parser.nit:15540 */
-  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, 15540);
-  }
-  /* parser/parser.nit:15541 */
-  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:15543 */
-  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, 15543);
-  }
-  /* parser/parser.nit:15545 */
-  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, 15545);
-  }
-  /* parser/parser.nit:15546 */
-  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:15547 */
-  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:15554 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15555 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15555);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15560;
-  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:15562 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15563 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15564 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15565 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15566 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15568 */
-  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, 15568);
-  }
-  /* parser/parser.nit:15569 */
-  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:15576 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15577 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15577);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15582;
-  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:15584 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15585 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15586 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15587 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15588 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15589 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15591 */
-  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, 15591);
-  }
-  /* parser/parser.nit:15593 */
-  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, 15593);
-  }
-  /* parser/parser.nit:15594 */
-  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:15595 */
-  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:15602 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:15603 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15603);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15608;
-  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:15610 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15611 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15612 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15613 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15614 */
-  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:15621 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15622 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15622);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15627;
-  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:15629 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15630 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15631 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15632 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15633 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15635 */
-  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, 15635);
-  }
-  /* parser/parser.nit:15636 */
-  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:15637 */
-  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:15644 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15645 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15645);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15650;
-  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:15652 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15653 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15654 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15655 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15656 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15657 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15659 */
-  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, 15659);
-  }
-  /* parser/parser.nit:15661 */
-  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, 15661);
-  }
-  /* parser/parser.nit:15662 */
-  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:15669 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:15670 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15670);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15675;
-  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:15677 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15678 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15679 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15680 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15681 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15682 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15683 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15685 */
-  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, 15685);
-  }
-  /* parser/parser.nit:15687 */
-  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, 15687);
-  }
-  /* parser/parser.nit:15688 */
-  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:15690 */
-  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, 15690);
-  }
-  /* parser/parser.nit:15691 */
-  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:15698 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15699 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15699);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15704;
-  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:15706 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15707 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15708 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15709 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15710 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15711 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15712 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15714 */
-  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, 15714);
-  }
-  /* parser/parser.nit:15716 */
-  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, 15716);
-  }
-  /* parser/parser.nit:15718 */
-  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, 15718);
-  }
-  /* parser/parser.nit:15719 */
-  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:15726 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:15727 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15727);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15732;
-  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:15734 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15735 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15736 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15737 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15738 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15739 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15740 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15741 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15743 */
-  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, 15743);
-  }
-  /* parser/parser.nit:15745 */
-  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, 15745);
-  }
-  /* parser/parser.nit:15746 */
-  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:15748 */
-  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, 15748);
-  }
-  /* parser/parser.nit:15750 */
-  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, 15750);
-  }
-  /* parser/parser.nit:15751 */
-  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:15758 */
-  fra.me.REG[2] = fra.me.REG[8];
-  /* parser/parser.nit:15759 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15759);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15764;
-  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:15766 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15767 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15768 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15769 */
-  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:15776 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15777 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15777);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15782;
-  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:15784 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15785 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15786 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15787 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15789 */
-  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, 15789);
-  }
-  /* parser/parser.nit:15790 */
-  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:15797 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15798 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15798);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15803;
-  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:15805 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15806 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15807 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15808 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15810 */
-  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:15811 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:15813 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15814 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15814);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15819;
-  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:15821 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15822 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15823 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15824 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15825 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15828 */
-  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, 15828);
-  }
-  /* parser/parser.nit:15829 */
-  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:15830 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:15832 */
-  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:15833 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15834 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15834);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15839;
-  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:15841 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15842 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15843 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15844 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15846 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15847 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15847);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15852;
-  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:15854 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15855 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15857 */
-  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, 15857);
-  }
-  /* parser/parser.nit:15858 */
-  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:15864 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15865 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15865);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15870;
-  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:15872 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15873 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15874 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15876 */
-  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, 15876);
-  }
-  /* parser/parser.nit:15878 */
-  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, 15878);
-  }
-  /* parser/parser.nit:15879 */
-  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:15885 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15886 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15886);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15891;
-  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:15893 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15894 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15895 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15897 */
-  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, 15897);
-  }
-  /* parser/parser.nit:15899 */
-  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, 15899);
-  }
-  /* parser/parser.nit:15900 */
-  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:15906 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15907 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15907);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15912;
-  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:15914 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15915 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15916 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15917 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15919 */
-  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, 15919);
-  }
-  /* parser/parser.nit:15921 */
-  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, 15921);
-  }
-  /* parser/parser.nit:15923 */
-  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, 15923);
-  }
-  /* parser/parser.nit:15924 */
-  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:15930 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15931 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15931);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15936;
-  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:15938 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15939 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15940 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15941 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15943 */
-  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, 15943);
-  }
-  /* parser/parser.nit:15945 */
-  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, 15945);
-  }
-  /* parser/parser.nit:15947 */
-  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, 15947);
-  }
-  /* parser/parser.nit:15948 */
-  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:15954 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:15955 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15955);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15960;
-  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:15962 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15963 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15964 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15965 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15966 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15968 */
-  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, 15968);
-  }
-  /* parser/parser.nit:15970 */
-  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, 15970);
-  }
-  /* parser/parser.nit:15972 */
-  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, 15972);
-  }
-  /* parser/parser.nit:15974 */
-  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, 15974);
-  }
-  /* parser/parser.nit:15975 */
-  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:15981 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:15982 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15982);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 15987;
-  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:15989 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:15990 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:15991 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:15993 */
-  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, 15993);
-  }
-  /* parser/parser.nit:15994 */
-  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:15995 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:15996 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 15996);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16001;
-  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:16003 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16004 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16005 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16006 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16007 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16009 */
-  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, 16009);
-  }
-  /* parser/parser.nit:16011 */
-  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, 16011);
-  }
-  /* parser/parser.nit:16013 */
-  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, 16013);
-  }
-  /* parser/parser.nit:16014 */
-  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:16021 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16022 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16022);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16027;
-  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:16029 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16030 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16031 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16032 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16033 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16034 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16036 */
-  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, 16036);
-  }
-  /* parser/parser.nit:16038 */
-  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, 16038);
-  }
-  /* parser/parser.nit:16040 */
-  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, 16040);
-  }
-  /* parser/parser.nit:16042 */
-  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, 16042);
-  }
-  /* parser/parser.nit:16043 */
-  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:16050 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16051 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16051);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16056;
-  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:16058 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16059 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16060 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16061 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16062 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16063 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16064 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16066 */
-  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, 16066);
-  }
-  /* parser/parser.nit:16068 */
-  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, 16068);
-  }
-  /* parser/parser.nit:16070 */
-  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, 16070);
-  }
-  /* parser/parser.nit:16072 */
-  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, 16072);
-  }
-  /* parser/parser.nit:16073 */
-  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:16080 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16081 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16081);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16086;
-  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:16088 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16089 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16090 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16091 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16092 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16093 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16094 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16095 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16097 */
-  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, 16097);
-  }
-  /* parser/parser.nit:16099 */
-  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, 16099);
-  }
-  /* parser/parser.nit:16101 */
-  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, 16101);
-  }
-  /* parser/parser.nit:16103 */
-  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, 16103);
-  }
-  /* parser/parser.nit:16105 */
-  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, 16105);
-  }
-  /* parser/parser.nit:16106 */
-  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:16113 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16114 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16114);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16119;
-  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:16121 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16122 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16123 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16124 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16125 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16128 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16130 */
-  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, 16130);
-  }
-  /* parser/parser.nit:16132 */
-  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, 16132);
-  }
-  /* parser/parser.nit:16134 */
-  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, 16134);
-  }
-  /* parser/parser.nit:16136 */
-  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, 16136);
-  }
-  /* parser/parser.nit:16137 */
-  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:16144 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16145 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16145);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16150;
-  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:16152 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16153 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16154 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16155 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16156 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16159 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16160 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16162 */
-  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, 16162);
-  }
-  /* parser/parser.nit:16164 */
-  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, 16164);
-  }
-  /* parser/parser.nit:16166 */
-  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, 16166);
-  }
-  /* parser/parser.nit:16168 */
-  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, 16168);
-  }
-  /* parser/parser.nit:16170 */
-  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, 16170);
-  }
-  /* parser/parser.nit:16171 */
-  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:16178 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16179 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16179);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16184;
-  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:16186 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16187 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16189 */
-  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, 16189);
-  }
-  /* parser/parser.nit:16190 */
-  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:16194 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16195 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16195);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16200;
-  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:16202 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16203 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16204 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16205 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16206 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16208 */
-  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, 16208);
-  }
-  /* parser/parser.nit:16210 */
-  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, 16210);
-  }
-  /* parser/parser.nit:16211 */
-  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:16212 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:16214 */
-  fra.me.REG[5] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[4], fra.me.REG[5]);
-  /* parser/parser.nit:16218 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16219 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16219);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16224;
-  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:16226 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16227 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16228 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16229 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16230 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16231 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16233 */
-  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, 16233);
-  }
-  /* parser/parser.nit:16235 */
-  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, 16235);
-  }
-  /* parser/parser.nit:16237 */
-  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, 16237);
-  }
-  /* parser/parser.nit:16238 */
-  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:16239 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:16241 */
-  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:16242 */
-  fra.me.REG[6] = NEW_AExternCalls_parser___parser_prod___AExternCalls___init_aexterncalls(fra.me.REG[5], fra.me.REG[6]);
-  /* parser/parser.nit:16246 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:16247 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16247);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16252;
-  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:16254 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16255 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16256 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16257 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16259 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16260 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16260);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16265;
-  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:16267 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16268 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16270 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16271 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16271);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16276;
-  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:16278 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16279 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16281 */
-  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, 16281);
-  }
-  /* parser/parser.nit:16282 */
-  fra.me.REG[3] = NEW_ASuperExternCall_parser___parser_prod___ASuperExternCall___init_asuperexterncall(fra.me.REG[3]);
-  /* parser/parser.nit:16285 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16286 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16286);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16291;
-  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:16293 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16294 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16296 */
-  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, 16296);
-  }
-  /* parser/parser.nit:16297 */
-  fra.me.REG[3] = NEW_ALocalPropExternCall_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(fra.me.REG[3]);
-  /* parser/parser.nit:16300 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16301 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16301);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16306;
-  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:16308 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16309 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16310 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16311 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16313 */
-  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, 16313);
-  }
-  /* parser/parser.nit:16315 */
-  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, 16315);
-  }
-  /* parser/parser.nit:16317 */
-  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, 16317);
-  }
-  /* parser/parser.nit:16318 */
-  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:16323 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16324 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16324);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16329;
-  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:16331 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16332 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16334 */
-  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, 16334);
-  }
-  /* parser/parser.nit:16335 */
-  fra.me.REG[3] = NEW_AInitPropExternCall_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(fra.me.REG[3]);
-  /* parser/parser.nit:16338 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16339 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16339);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16344;
-  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:16346 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16347 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16348 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16351 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16352 */
-  fra.me.REG[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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16356 */
-  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, 16356);
-  }
-  /* parser/parser.nit:16358 */
-  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, 16358);
-  }
-  /* parser/parser.nit:16360 */
-  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, 16360);
-  }
-  /* parser/parser.nit:16361 */
-  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:16366 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16367 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16367);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 16372;
-  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:16374 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16375 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16376 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16377 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16378 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16380 */
-  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, 16380);
-  }
-  /* parser/parser.nit:16382 */
-  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, 16382);
-  }
-  /* parser/parser.nit:16384 */
-  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, 16384);
-  }
-  /* parser/parser.nit:16385 */
-  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:16390 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16391 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16391);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16396;
-  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:16398 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16399 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16400 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16401 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16402 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16403 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16404 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16406 */
-  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, 16406);
-  }
-  /* parser/parser.nit:16408 */
-  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, 16408);
-  }
-  /* parser/parser.nit:16410 */
-  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, 16410);
-  }
-  /* parser/parser.nit:16412 */
-  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, 16412);
-  }
-  /* parser/parser.nit:16413 */
-  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:16419 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16420 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16420);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16425;
-  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:16427 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16428 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16429 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16431 */
-  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, 16431);
-  }
-  /* parser/parser.nit:16433 */
-  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, 16433);
-  }
-  /* parser/parser.nit:16434 */
-  fra.me.REG[3] = NEW_AInLanguage_parser___parser_prod___AInLanguage___init_ainlanguage(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16438 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16439 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16439);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16444;
-  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:16446 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16447 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16449 */
-  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, 16449);
-  }
-  /* parser/parser.nit:16450 */
-  fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:16454 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16455 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16455);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16460;
-  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:16462 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16463 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16464 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16466 */
-  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, 16466);
-  }
-  /* parser/parser.nit:16468 */
-  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, 16468);
-  }
-  /* parser/parser.nit:16469 */
-  fra.me.REG[3] = NEW_AExternCodeBlock_parser___parser_prod___AExternCodeBlock___init_aexterncodeblock(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16473 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16474 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16474);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16479;
-  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:16481 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16482 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16483 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16485 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16486 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16486);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16491;
-  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:16493 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16494 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16495 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16497 */
-  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, 16497);
-  }
-  /* parser/parser.nit:16498 */
-  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:16504 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16505 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16505);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16510;
-  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:16512 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16513 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16514 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16515 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16517 */
-  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, 16517);
-  }
-  /* parser/parser.nit:16519 */
-  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, 16519);
-  }
-  /* parser/parser.nit:16520 */
-  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:16526 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16527 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16527);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16532;
-  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:16534 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16535 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16536 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16537 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16539 */
-  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, 16539);
-  }
-  /* parser/parser.nit:16541 */
-  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, 16541);
-  }
-  /* parser/parser.nit:16542 */
-  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:16548 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16549 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16549);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 16554;
-  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:16556 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16557 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16558 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16559 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16560 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16562 */
-  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, 16562);
-  }
-  /* parser/parser.nit:16564 */
-  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, 16564);
-  }
-  /* parser/parser.nit:16566 */
-  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, 16566);
-  }
-  /* parser/parser.nit:16567 */
-  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:16573 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16574 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16574);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16579;
-  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:16581 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16582 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16583 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16586 */
-  fra.me.REG[4] = 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[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16590 */
-  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, 16590);
-  }
-  /* parser/parser.nit:16592 */
-  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, 16592);
-  }
-  /* parser/parser.nit:16593 */
-  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:16594 */
-  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:16600 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16601 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16601);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16606;
-  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:16608 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16609 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16610 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* 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[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16613 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16616 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16618 */
-  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, 16618);
-  }
-  /* parser/parser.nit:16620 */
-  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, 16620);
-  }
-  /* parser/parser.nit:16622 */
-  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, 16622);
-  }
-  /* parser/parser.nit:16623 */
-  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:16624 */
-  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:16630 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:16631 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16631);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16636;
-  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:16638 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16639 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16640 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16641 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16642 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16643 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16644 */
-  fra.me.REG[5] = 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[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16648 */
-  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, 16648);
-  }
-  /* parser/parser.nit:16650 */
-  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, 16650);
-  }
-  /* parser/parser.nit:16651 */
-  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:16653 */
-  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, 16653);
-  }
-  /* parser/parser.nit:16654 */
-  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:16660 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16661 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16661);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16666;
-  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:16668 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16669 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16670 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16671 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16674 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16677 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16679 */
-  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, 16679);
-  }
-  /* parser/parser.nit:16681 */
-  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, 16681);
-  }
-  /* parser/parser.nit:16683 */
-  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, 16683);
-  }
-  /* parser/parser.nit:16684 */
-  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:16686 */
-  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, 16686);
-  }
-  /* parser/parser.nit:16687 */
-  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:16693 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16694 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16694);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16699;
-  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:16701 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16702 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16703 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16705 */
-  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:16706 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:16708 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16709 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16709);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16714;
-  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:16716 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16717 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16718 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16719 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16722 */
-  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, 16722);
-  }
-  /* parser/parser.nit:16723 */
-  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:16724 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:16726 */
-  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:16727 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16728 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16728);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16733;
-  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:16735 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16736 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16737 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16738 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16740 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16741 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16741);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16746;
-  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:16748 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16749 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16750 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16752 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16753 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16753);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 16758;
-  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:16760 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16761 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16762 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16763 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16765 */
-  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, 16765);
-  }
-  /* parser/parser.nit:16766 */
-  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16770 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16771 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16771);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16776;
-  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:16778 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16779 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16780 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16782 */
-  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, 16782);
-  }
-  /* parser/parser.nit:16783 */
-  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16787 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16788 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16788);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16793;
-  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:16795 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16796 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16798 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16799 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16799);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16804;
-  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:16806 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16807 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16808 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16810 */
-  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, 16810);
-  }
-  /* parser/parser.nit:16811 */
-  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:16812 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:16814 */
-  fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:16818 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16819 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16819);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16824;
-  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:16826 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16827 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16828 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16829 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16831 */
-  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, 16831);
-  }
-  /* parser/parser.nit:16833 */
-  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, 16833);
-  }
-  /* parser/parser.nit:16834 */
-  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:16835 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:16837 */
-  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:16838 */
-  fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:16842 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16843 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16843);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-static const char LOCATE_parser___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 = 16848;
-  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:16850 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16851 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16852 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16853 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16855 */
-  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, 16855);
-  }
-  /* parser/parser.nit:16856 */
-  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:16857 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:16859 */
-  fra.me.REG[4] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:16863 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:16864 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16864);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16869;
-  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:16871 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16872 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16873 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16874 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16875 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16877 */
-  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, 16877);
-  }
-  /* parser/parser.nit:16879 */
-  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, 16879);
-  }
-  /* parser/parser.nit:16880 */
-  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:16881 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:16883 */
-  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:16884 */
-  fra.me.REG[5] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:16888 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:16889 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16889);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16894;
-  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:16896 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16897 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16898 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16899 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16900 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16902 */
-  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, 16902);
-  }
-  /* parser/parser.nit:16903 */
-  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:16904 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:16907 */
-  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, 16907);
-  }
-  /* parser/parser.nit:16908 */
-  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:16912 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16913 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16913);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16918;
-  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:16920 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16921 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16922 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16923 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16924 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16925 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:16927 */
-  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, 16927);
-  }
-  /* parser/parser.nit:16929 */
-  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, 16929);
-  }
-  /* parser/parser.nit:16930 */
-  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:16931 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-  }
-  /* parser/parser.nit:16933 */
-  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:16935 */
-  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, 16935);
-  }
-  /* parser/parser.nit:16936 */
-  fra.me.REG[3] = NEW_ABlockExpr_parser___parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:16940 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16941 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16941);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16946;
-  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:16948 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16949 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16951 */
-  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, 16951);
-  }
-  /* parser/parser.nit:16952 */
-  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:16956 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16957 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16957);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16962;
-  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:16964 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16965 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16966 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16968 */
-  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, 16968);
-  }
-  /* parser/parser.nit:16970 */
-  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, 16970);
-  }
-  /* parser/parser.nit:16971 */
-  fra.me.REG[3] = NEW_AReturnExpr_parser___parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:16975 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16976 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16976);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16981;
-  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:16983 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:16984 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:16986 */
-  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, 16986);
-  }
-  /* parser/parser.nit:16987 */
-  fra.me.REG[3] = NEW_ABreakExpr_parser___parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:16992 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:16993 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 16993);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 16998;
-  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:17000 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17001 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17002 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17004 */
-  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, 17004);
-  }
-  /* parser/parser.nit:17006 */
-  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, 17006);
-  }
-  /* parser/parser.nit:17007 */
-  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:17012 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17013 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17013);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17018;
-  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:17020 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17021 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17022 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17024 */
-  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, 17024);
-  }
-  /* parser/parser.nit:17026 */
-  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, 17026);
-  }
-  /* parser/parser.nit:17027 */
-  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:17032 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17033 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17033);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17038;
-  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:17040 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17041 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17042 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17043 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17045 */
-  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, 17045);
-  }
-  /* parser/parser.nit:17047 */
-  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, 17047);
-  }
-  /* parser/parser.nit:17049 */
-  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, 17049);
-  }
-  /* parser/parser.nit:17050 */
-  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:17055 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17056 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17056);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17061;
-  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:17063 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17064 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17066 */
-  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, 17066);
-  }
-  /* parser/parser.nit:17067 */
-  fra.me.REG[3] = NEW_AAbortExpr_parser___parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[3]);
-  /* parser/parser.nit:17070 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17071 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17071);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17076;
-  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:17078 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17079 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17081 */
-  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, 17081);
-  }
-  /* parser/parser.nit:17082 */
-  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* parser/parser.nit:17087 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17088 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17088);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17093;
-  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:17095 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17096 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17097 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17099 */
-  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, 17099);
-  }
-  /* parser/parser.nit:17101 */
-  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, 17101);
-  }
-  /* parser/parser.nit:17102 */
-  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:17107 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17108 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17108);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17113;
-  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:17115 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17116 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17117 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17119 */
-  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, 17119);
-  }
-  /* parser/parser.nit:17121 */
-  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, 17121);
-  }
-  /* parser/parser.nit:17122 */
-  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:17127 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17128 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17128);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17133;
-  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:17135 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17136 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17137 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17138 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17140 */
-  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, 17140);
-  }
-  /* parser/parser.nit:17142 */
-  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, 17142);
-  }
-  /* parser/parser.nit:17144 */
-  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, 17144);
-  }
-  /* parser/parser.nit:17145 */
-  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:17150 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17151 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17151);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17156;
-  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:17158 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17159 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17160 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17161 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17162 */
-  fra.me.REG[5] = 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[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17166 */
-  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, 17166);
-  }
-  /* parser/parser.nit:17168 */
-  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, 17168);
-  }
-  /* parser/parser.nit:17170 */
-  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, 17170);
-  }
-  /* parser/parser.nit:17171 */
-  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:17177 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:17178 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17178);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17183;
-  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:17185 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17186 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17187 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17188 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17189 */
-  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:17191 */
-  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, 17191);
-  }
-  /* parser/parser.nit:17193 */
-  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, 17193);
-  }
-  /* parser/parser.nit:17194 */
-  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:17200 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:17201 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17201);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17206;
-  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:17208 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17209 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17210 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17211 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17212 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17213 */
-  fra.me.REG[6] = 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[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17217 */
-  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, 17217);
-  }
-  /* parser/parser.nit:17219 */
-  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, 17219);
-  }
-  /* parser/parser.nit:17221 */
-  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, 17221);
-  }
-  /* parser/parser.nit:17223 */
-  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, 17223);
-  }
-  /* parser/parser.nit:17224 */
-  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:17225 */
-  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:17231 */
-  fra.me.REG[2] = fra.me.REG[7];
-  /* parser/parser.nit:17232 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17232);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17237;
-  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:17239 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17240 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17241 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17242 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17243 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17244 */
-  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:17246 */
-  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, 17246);
-  }
-  /* parser/parser.nit:17248 */
-  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, 17248);
-  }
-  /* parser/parser.nit:17250 */
-  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, 17250);
-  }
-  /* parser/parser.nit:17251 */
-  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:17252 */
-  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:17258 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:17259 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17259);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17264;
-  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:17266 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17267 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17268 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17270 */
-  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, 17270);
-  }
-  /* parser/parser.nit:17272 */
-  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, 17272);
-  }
-  /* parser/parser.nit:17273 */
-  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:17278 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17279 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17279);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17284;
-  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:17286 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17287 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17288 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17289 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17291 */
-  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, 17291);
-  }
-  /* parser/parser.nit:17293 */
-  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, 17293);
-  }
-  /* parser/parser.nit:17295 */
-  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, 17295);
-  }
-  /* parser/parser.nit:17296 */
-  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:17301 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17302 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17302);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17307;
-  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:17309 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17310 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17311 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17312 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17313 */
-  fra.me.REG[5] = 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:17316 */
-  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, 17316);
-  }
-  /* parser/parser.nit:17318 */
-  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, 17318);
-  }
-  /* parser/parser.nit:17320 */
-  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, 17320);
-  }
-  /* parser/parser.nit:17321 */
-  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:17326 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17327 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17327);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17332;
-  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:17334 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17335 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17336 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17337 */
-  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:17339 */
-  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, 17339);
-  }
-  /* parser/parser.nit:17341 */
-  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, 17341);
-  }
-  /* parser/parser.nit:17342 */
-  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:17347 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17348 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17348);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17353;
-  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:17355 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17356 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17357 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17358 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17359 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17360 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17362 */
-  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, 17362);
-  }
-  /* parser/parser.nit:17364 */
-  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, 17364);
-  }
-  /* parser/parser.nit:17366 */
-  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, 17366);
-  }
-  /* parser/parser.nit:17368 */
-  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, 17368);
-  }
-  /* parser/parser.nit:17369 */
-  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:17375 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:17376 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17376);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17381;
-  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:17383 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17384 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17385 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17387 */
-  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, 17387);
-  }
-  /* parser/parser.nit:17389 */
-  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, 17389);
-  }
-  /* parser/parser.nit:17390 */
-  fra.me.REG[3] = NEW_ALabel_parser___parser_prod___ALabel___init_alabel(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:17394 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17395 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17395);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17400;
-  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:17402 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17403 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17404 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17406 */
-  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:17407 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:17409 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:17410 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17410);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17415;
-  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:17417 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17418 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17419 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17420 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17423 */
-  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, 17423);
-  }
-  /* parser/parser.nit:17424 */
-  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:17425 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:17427 */
-  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:17428 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:17429 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17429);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17434;
-  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:17436 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17437 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17438 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17439 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17440 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17441 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17442 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17444 */
-  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, 17444);
-  }
-  /* parser/parser.nit:17446 */
-  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, 17446);
-  }
-  /* parser/parser.nit:17448 */
-  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, 17448);
-  }
-  /* parser/parser.nit:17450 */
-  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, 17450);
-  }
-  /* parser/parser.nit:17452 */
-  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, 17452);
-  }
-  /* parser/parser.nit:17453 */
-  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:17461 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17462 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17462);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17467;
-  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:17469 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17470 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17471 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17472 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17473 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17474 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17475 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17476 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17477 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17478 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17480 */
-  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, 17480);
-  }
-  /* parser/parser.nit:17482 */
-  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, 17482);
-  }
-  /* parser/parser.nit:17484 */
-  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, 17484);
-  }
-  /* parser/parser.nit:17485 */
-  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:17487 */
-  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, 17487);
-  }
-  /* parser/parser.nit:17489 */
-  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, 17489);
-  }
-  /* parser/parser.nit:17491 */
-  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, 17491);
-  }
-  /* parser/parser.nit:17492 */
-  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:17500 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17501 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17501);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17506;
-  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:17508 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17509 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17510 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17511 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17512 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17513 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17514 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17515 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17517 */
-  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, 17517);
-  }
-  /* parser/parser.nit:17519 */
-  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, 17519);
-  }
-  /* parser/parser.nit:17521 */
-  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, 17521);
-  }
-  /* parser/parser.nit:17522 */
-  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:17524 */
-  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, 17524);
-  }
-  /* parser/parser.nit:17526 */
-  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, 17526);
-  }
-  /* parser/parser.nit:17528 */
-  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, 17528);
-  }
-  /* parser/parser.nit:17529 */
-  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:17537 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17538 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17538);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17543;
-  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:17545 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17546 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17547 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17548 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17549 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17550 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17552 */
-  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, 17552);
-  }
-  /* parser/parser.nit:17554 */
-  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, 17554);
-  }
-  /* parser/parser.nit:17556 */
-  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, 17556);
-  }
-  /* parser/parser.nit:17558 */
-  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, 17558);
-  }
-  /* parser/parser.nit:17559 */
-  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:17567 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17568 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17568);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17573;
-  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:17575 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17576 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17577 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17578 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17579 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17580 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17581 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17582 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17583 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17585 */
-  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, 17585);
-  }
-  /* parser/parser.nit:17587 */
-  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, 17587);
-  }
-  /* parser/parser.nit:17589 */
-  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, 17589);
-  }
-  /* parser/parser.nit:17590 */
-  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:17592 */
-  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, 17592);
-  }
-  /* parser/parser.nit:17594 */
-  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, 17594);
-  }
-  /* parser/parser.nit:17595 */
-  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:17603 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17604 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17604);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17609;
-  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:17611 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17612 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17613 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17614 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17615 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17616 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17617 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17619 */
-  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, 17619);
-  }
-  /* parser/parser.nit:17621 */
-  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, 17621);
-  }
-  /* parser/parser.nit:17623 */
-  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, 17623);
-  }
-  /* parser/parser.nit:17624 */
-  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:17626 */
-  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, 17626);
-  }
-  /* parser/parser.nit:17628 */
-  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, 17628);
-  }
-  /* parser/parser.nit:17629 */
-  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:17637 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17638 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17638);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17643;
-  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:17645 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17646 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17647 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17648 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17651 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17653 */
-  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, 17653);
-  }
-  /* parser/parser.nit:17655 */
-  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, 17655);
-  }
-  /* parser/parser.nit:17657 */
-  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, 17657);
-  }
-  /* parser/parser.nit:17658 */
-  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:17666 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17667 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17667);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17672;
-  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:17674 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17675 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17676 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17677 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17681 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17682 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17683 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17685 */
-  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, 17685);
-  }
-  /* parser/parser.nit:17687 */
-  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, 17687);
-  }
-  /* parser/parser.nit:17689 */
-  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, 17689);
-  }
-  /* parser/parser.nit:17690 */
-  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:17692 */
-  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, 17692);
-  }
-  /* parser/parser.nit:17693 */
-  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:17701 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17702 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17702);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17707;
-  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:17709 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17710 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17711 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17712 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17715 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17716 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17718 */
-  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, 17718);
-  }
-  /* parser/parser.nit:17720 */
-  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, 17720);
-  }
-  /* parser/parser.nit:17722 */
-  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, 17722);
-  }
-  /* parser/parser.nit:17723 */
-  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:17725 */
-  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, 17725);
-  }
-  /* parser/parser.nit:17726 */
-  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:17734 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17735 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17735);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17740;
-  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:17742 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17743 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17744 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17745 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17746 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17747 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17748 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17750 */
-  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, 17750);
-  }
-  /* parser/parser.nit:17752 */
-  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, 17752);
-  }
-  /* parser/parser.nit:17754 */
-  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, 17754);
-  }
-  /* parser/parser.nit:17756 */
-  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, 17756);
-  }
-  /* parser/parser.nit:17757 */
-  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:17765 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17766 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17766);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17771;
-  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:17773 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17774 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17775 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17776 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17777 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17778 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17779 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17780 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17781 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17782 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17784 */
-  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, 17784);
-  }
-  /* parser/parser.nit:17786 */
-  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, 17786);
-  }
-  /* parser/parser.nit:17788 */
-  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, 17788);
-  }
-  /* parser/parser.nit:17789 */
-  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:17791 */
-  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, 17791);
-  }
-  /* parser/parser.nit:17793 */
-  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, 17793);
-  }
-  /* parser/parser.nit:17794 */
-  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:17802 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17803 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17803);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17808;
-  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:17810 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17811 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17812 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17813 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17814 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17815 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17816 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17817 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17819 */
-  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, 17819);
-  }
-  /* parser/parser.nit:17821 */
-  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, 17821);
-  }
-  /* parser/parser.nit:17823 */
-  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, 17823);
-  }
-  /* parser/parser.nit:17824 */
-  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:17826 */
-  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, 17826);
-  }
-  /* parser/parser.nit:17828 */
-  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, 17828);
-  }
-  /* parser/parser.nit:17829 */
-  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:17837 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17838 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17838);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17843;
-  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:17845 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17846 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17847 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17848 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17849 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17850 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17852 */
-  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, 17852);
-  }
-  /* parser/parser.nit:17854 */
-  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, 17854);
-  }
-  /* parser/parser.nit:17856 */
-  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, 17856);
-  }
-  /* parser/parser.nit:17857 */
-  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:17865 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17866 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17866);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17871;
-  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:17873 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17874 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17875 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17876 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17877 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17878 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17879 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17880 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17881 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17883 */
-  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, 17883);
-  }
-  /* parser/parser.nit:17885 */
-  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, 17885);
-  }
-  /* parser/parser.nit:17887 */
-  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, 17887);
-  }
-  /* parser/parser.nit:17888 */
-  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:17890 */
-  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, 17890);
-  }
-  /* parser/parser.nit:17891 */
-  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:17899 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17900 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17900);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17905;
-  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:17907 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17908 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17909 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17910 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17911 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17912 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17913 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:17915 */
-  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, 17915);
-  }
-  /* parser/parser.nit:17917 */
-  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, 17917);
-  }
-  /* parser/parser.nit:17919 */
-  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, 17919);
-  }
-  /* parser/parser.nit:17920 */
-  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:17922 */
-  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, 17922);
-  }
-  /* parser/parser.nit:17923 */
-  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:17931 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17932 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17932);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17937;
-  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:17939 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17940 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17942 */
-  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, 17942);
-  }
-  /* parser/parser.nit:17943 */
-  fra.me.REG[3] = NEW_ASimpleClosureId_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[3]);
-  /* parser/parser.nit:17946 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17947 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17947);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17952;
-  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:17954 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17955 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17957 */
-  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, 17957);
-  }
-  /* parser/parser.nit:17958 */
-  fra.me.REG[3] = NEW_ABreakClosureId_parser___parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[3]);
-  /* parser/parser.nit:17961 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17962 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17962);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17967;
-  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:17969 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17970 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17972 */
-  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, 17972);
-  }
-  /* parser/parser.nit:17973 */
-  fra.me.REG[3] = NEW_AContinueExpr_parser___parser_prod___AContinueExpr___init_acontinueexpr(NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* parser/parser.nit:17978 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:17979 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 17979);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 17984;
-  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:17986 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:17987 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17988 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:17990 */
-  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, 17990);
-  }
-  /* parser/parser.nit:17992 */
-  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, 17992);
-  }
-  /* parser/parser.nit:17993 */
-  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:18001 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18002 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18002);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18007;
-  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:18009 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18010 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18011 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18012 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18014 */
-  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, 18014);
-  }
-  /* parser/parser.nit:18016 */
-  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, 18016);
-  }
-  /* parser/parser.nit:18018 */
-  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, 18018);
-  }
-  /* parser/parser.nit:18019 */
-  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:18027 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18028 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18028);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18033;
-  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:18035 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18036 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18037 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18038 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18040 */
-  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, 18040);
-  }
-  /* parser/parser.nit:18042 */
-  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, 18042);
-  }
-  /* parser/parser.nit:18044 */
-  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, 18044);
-  }
-  /* parser/parser.nit:18045 */
-  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:18053 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18054 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18054);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18059;
-  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:18061 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18062 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18063 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18064 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18065 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18067 */
-  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, 18067);
-  }
-  /* parser/parser.nit:18069 */
-  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, 18069);
-  }
-  /* parser/parser.nit:18071 */
-  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, 18071);
-  }
-  /* parser/parser.nit:18073 */
-  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, 18073);
-  }
-  /* parser/parser.nit:18074 */
-  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:18082 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:18083 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18083);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18088;
-  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:18090 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18091 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18092 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18093 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18094 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18095 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18097 */
-  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, 18097);
-  }
-  /* parser/parser.nit:18099 */
-  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, 18099);
-  }
-  /* parser/parser.nit:18101 */
-  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, 18101);
-  }
-  /* parser/parser.nit:18103 */
-  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, 18103);
-  }
-  /* parser/parser.nit:18104 */
-  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:18112 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18113 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18113);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18118;
-  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:18120 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18121 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18122 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18123 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18124 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18125 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18126 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18128 */
-  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, 18128);
-  }
-  /* parser/parser.nit:18130 */
-  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, 18130);
-  }
-  /* parser/parser.nit:18132 */
-  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, 18132);
-  }
-  /* parser/parser.nit:18134 */
-  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, 18134);
-  }
-  /* parser/parser.nit:18136 */
-  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, 18136);
-  }
-  /* parser/parser.nit:18137 */
-  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:18145 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:18146 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18146);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18151;
-  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:18153 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18154 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18155 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18156 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18157 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18158 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18159 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18161 */
-  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, 18161);
-  }
-  /* parser/parser.nit:18163 */
-  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, 18163);
-  }
-  /* parser/parser.nit:18165 */
-  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, 18165);
-  }
-  /* parser/parser.nit:18167 */
-  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, 18167);
-  }
-  /* parser/parser.nit:18169 */
-  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, 18169);
-  }
-  /* parser/parser.nit:18170 */
-  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:18178 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18179 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18179);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18184;
-  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:18186 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18187 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18188 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18189 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18190 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18191 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18192 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18193 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18195 */
-  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, 18195);
-  }
-  /* parser/parser.nit:18197 */
-  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, 18197);
-  }
-  /* parser/parser.nit:18199 */
-  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, 18199);
-  }
-  /* parser/parser.nit:18201 */
-  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, 18201);
-  }
-  /* parser/parser.nit:18203 */
-  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, 18203);
-  }
-  /* parser/parser.nit:18205 */
-  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, 18205);
-  }
-  /* parser/parser.nit:18206 */
-  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:18214 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:18215 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18215);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18220;
-  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:18222 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18223 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18224 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18225 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18226 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18227 */
-  fra.me.REG[6] = 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:18230 */
-  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, 18230);
-  }
-  /* parser/parser.nit:18232 */
-  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, 18232);
-  }
-  /* parser/parser.nit:18234 */
-  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, 18234);
-  }
-  /* parser/parser.nit:18236 */
-  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, 18236);
-  }
-  /* parser/parser.nit:18237 */
-  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:18243 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18244 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18244);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18249;
-  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:18251 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18252 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18253 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18254 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18255 */
-  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18257 */
-  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, 18257);
-  }
-  /* parser/parser.nit:18259 */
-  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, 18259);
-  }
-  /* parser/parser.nit:18261 */
-  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, 18261);
-  }
-  /* parser/parser.nit:18262 */
-  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:18268 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18269 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18269);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18274;
-  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:18276 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18277 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18278 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18279 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18280 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18281 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18282 */
-  fra.me.REG[7] = 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:18285 */
-  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, 18285);
-  }
-  /* parser/parser.nit:18287 */
-  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, 18287);
-  }
-  /* parser/parser.nit:18289 */
-  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, 18289);
-  }
-  /* parser/parser.nit:18291 */
-  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, 18291);
-  }
-  /* parser/parser.nit:18293 */
-  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, 18293);
-  }
-  /* parser/parser.nit:18294 */
-  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:18301 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18302 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18302);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18307;
-  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:18309 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18310 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18311 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18312 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18313 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18314 */
-  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18316 */
-  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, 18316);
-  }
-  /* parser/parser.nit:18318 */
-  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, 18318);
-  }
-  /* parser/parser.nit:18320 */
-  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, 18320);
-  }
-  /* parser/parser.nit:18322 */
-  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, 18322);
-  }
-  /* parser/parser.nit:18323 */
-  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:18330 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18331 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18331);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18336;
-  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:18338 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18339 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18340 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18341 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18342 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18344 */
-  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, 18344);
-  }
-  /* parser/parser.nit:18346 */
-  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, 18346);
-  }
-  /* parser/parser.nit:18348 */
-  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, 18348);
-  }
-  /* parser/parser.nit:18350 */
-  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, 18350);
-  }
-  /* parser/parser.nit:18351 */
-  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:18357 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18358 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18358);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18363;
-  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:18365 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18366 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18367 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18368 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18369 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18370 */
-  fra.me.REG[6] = 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:18373 */
-  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, 18373);
-  }
-  /* parser/parser.nit:18375 */
-  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, 18375);
-  }
-  /* parser/parser.nit:18377 */
-  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, 18377);
-  }
-  /* parser/parser.nit:18379 */
-  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, 18379);
-  }
-  /* parser/parser.nit:18380 */
-  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:18386 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18387 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18387);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18392;
-  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:18394 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18395 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18396 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18397 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18398 */
-  fra.me.REG[6] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18400 */
-  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, 18400);
-  }
-  /* parser/parser.nit:18402 */
-  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, 18402);
-  }
-  /* parser/parser.nit:18404 */
-  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, 18404);
-  }
-  /* parser/parser.nit:18405 */
-  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:18411 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18412 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18412);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18417;
-  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:18419 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18420 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18421 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18422 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18423 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18424 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18425 */
-  fra.me.REG[7] = 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:18428 */
-  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, 18428);
-  }
-  /* parser/parser.nit:18430 */
-  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, 18430);
-  }
-  /* parser/parser.nit:18432 */
-  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, 18432);
-  }
-  /* parser/parser.nit:18434 */
-  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, 18434);
-  }
-  /* parser/parser.nit:18436 */
-  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, 18436);
-  }
-  /* parser/parser.nit:18437 */
-  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:18444 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18445 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18445);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18450;
-  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:18452 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18453 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18454 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18455 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18456 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18457 */
-  fra.me.REG[7] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:18459 */
-  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, 18459);
-  }
-  /* parser/parser.nit:18461 */
-  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, 18461);
-  }
-  /* parser/parser.nit:18463 */
-  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, 18463);
-  }
-  /* parser/parser.nit:18465 */
-  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, 18465);
-  }
-  /* parser/parser.nit:18466 */
-  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:18473 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18474 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18474);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18479;
-  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:18481 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18482 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18483 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18484 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18485 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18487 */
-  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, 18487);
-  }
-  /* parser/parser.nit:18489 */
-  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, 18489);
-  }
-  /* parser/parser.nit:18491 */
-  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, 18491);
-  }
-  /* parser/parser.nit:18493 */
-  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, 18493);
-  }
-  /* parser/parser.nit:18494 */
-  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:18500 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18501 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18501);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18506;
-  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:18508 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18509 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18511 */
-  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, 18511);
-  }
-  /* parser/parser.nit:18512 */
-  fra.me.REG[3] = NEW_APlusAssignOp_parser___parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[3]);
-  /* parser/parser.nit:18515 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18516 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18516);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18521;
-  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:18523 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18524 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18526 */
-  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, 18526);
-  }
-  /* parser/parser.nit:18527 */
-  fra.me.REG[3] = NEW_AMinusAssignOp_parser___parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[3]);
-  /* parser/parser.nit:18530 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18531 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18531);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18536;
-  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:18538 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18539 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18540 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18541 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18543 */
-  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, 18543);
-  }
-  /* parser/parser.nit:18545 */
-  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, 18545);
-  }
-  /* parser/parser.nit:18547 */
-  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, 18547);
-  }
-  /* parser/parser.nit:18548 */
-  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:18553 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18554 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18554);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18559;
-  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:18561 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18562 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18563 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18565 */
-  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, 18565);
-  }
-  /* parser/parser.nit:18567 */
-  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, 18567);
-  }
-  /* parser/parser.nit:18568 */
-  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:18573 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18574 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18574);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18579;
-  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:18581 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18582 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18583 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18584 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18585 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18586 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18589 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18591 */
-  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, 18591);
-  }
-  /* parser/parser.nit:18593 */
-  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, 18593);
-  }
-  /* parser/parser.nit:18595 */
-  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, 18595);
-  }
-  /* parser/parser.nit:18597 */
-  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, 18597);
-  }
-  /* parser/parser.nit:18598 */
-  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:18604 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18605 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18605);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18610;
-  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:18612 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18613 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18614 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18615 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18618 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18620 */
-  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, 18620);
-  }
-  /* parser/parser.nit:18622 */
-  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, 18622);
-  }
-  /* parser/parser.nit:18624 */
-  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, 18624);
-  }
-  /* parser/parser.nit:18625 */
-  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:18631 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18632 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18632);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18637;
-  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:18639 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18640 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18641 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18642 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18643 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18647 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18649 */
-  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, 18649);
-  }
-  /* parser/parser.nit:18651 */
-  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, 18651);
-  }
-  /* parser/parser.nit:18653 */
-  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, 18653);
-  }
-  /* parser/parser.nit:18655 */
-  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, 18655);
-  }
-  /* parser/parser.nit:18656 */
-  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:18662 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18663 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18663);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18668;
-  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:18670 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18671 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18672 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18673 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18676 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18678 */
-  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, 18678);
-  }
-  /* parser/parser.nit:18680 */
-  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, 18680);
-  }
-  /* parser/parser.nit:18682 */
-  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, 18682);
-  }
-  /* parser/parser.nit:18683 */
-  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:18689 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18690 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18690);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18695;
-  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:18697 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18698 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18699 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18700 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18704 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18706 */
-  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, 18706);
-  }
-  /* parser/parser.nit:18708 */
-  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, 18708);
-  }
-  /* parser/parser.nit:18710 */
-  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, 18710);
-  }
-  /* parser/parser.nit:18711 */
-  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:18717 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18718 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18718);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18723;
-  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:18725 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18726 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18727 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18728 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18730 */
-  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, 18730);
-  }
-  /* parser/parser.nit:18732 */
-  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, 18732);
-  }
-  /* parser/parser.nit:18734 */
-  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, 18734);
-  }
-  /* parser/parser.nit:18735 */
-  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:18740 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18741 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18741);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18746;
-  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:18748 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18749 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18750 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18752 */
-  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, 18752);
-  }
-  /* parser/parser.nit:18754 */
-  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, 18754);
-  }
-  /* parser/parser.nit:18755 */
-  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:18760 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18761 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18761);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18766;
-  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:18768 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18769 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18770 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18771 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18772 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18773 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18774 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18775 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18777 */
-  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, 18777);
-  }
-  /* parser/parser.nit:18779 */
-  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, 18779);
-  }
-  /* parser/parser.nit:18781 */
-  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, 18781);
-  }
-  /* parser/parser.nit:18783 */
-  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, 18783);
-  }
-  /* parser/parser.nit:18785 */
-  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, 18785);
-  }
-  /* parser/parser.nit:18786 */
-  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:18793 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18794 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18794);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18799;
-  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:18801 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18802 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18803 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18804 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18805 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18806 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18807 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18809 */
-  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, 18809);
-  }
-  /* parser/parser.nit:18811 */
-  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, 18811);
-  }
-  /* parser/parser.nit:18813 */
-  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, 18813);
-  }
-  /* parser/parser.nit:18815 */
-  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, 18815);
-  }
-  /* parser/parser.nit:18816 */
-  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:18823 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18824 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18824);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18829;
-  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:18831 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18832 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18833 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18834 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18835 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18836 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18837 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18838 */
-  fra.me.REG[7] = 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[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18843 */
-  fra.me.REG[8] = 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[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18847 */
-  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, 18847);
-  }
-  /* parser/parser.nit:18849 */
-  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, 18849);
-  }
-  /* parser/parser.nit:18850 */
-  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:18852 */
-  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, 18852);
-  }
-  /* parser/parser.nit:18854 */
-  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, 18854);
-  }
-  /* parser/parser.nit:18856 */
-  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, 18856);
-  }
-  /* parser/parser.nit:18858 */
-  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, 18858);
-  }
-  /* parser/parser.nit:18859 */
-  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:18867 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18868 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18868);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18873;
-  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:18875 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18876 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18877 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18878 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18879 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18880 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18881 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18882 */
-  fra.me.REG[7] = 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[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18886 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18887 */
-  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18889 */
-  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, 18889);
-  }
-  /* parser/parser.nit:18891 */
-  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, 18891);
-  }
-  /* parser/parser.nit:18892 */
-  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:18894 */
-  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, 18894);
-  }
-  /* parser/parser.nit:18896 */
-  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, 18896);
-  }
-  /* parser/parser.nit:18898 */
-  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, 18898);
-  }
-  /* parser/parser.nit:18900 */
-  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, 18900);
-  }
-  /* parser/parser.nit:18901 */
-  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:18909 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18910 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18910);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18915;
-  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:18917 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18918 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18919 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18920 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18921 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18922 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18923 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18928 */
-  fra.me.REG[7] = 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[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18932 */
-  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, 18932);
-  }
-  /* parser/parser.nit:18934 */
-  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, 18934);
-  }
-  /* parser/parser.nit:18935 */
-  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:18937 */
-  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, 18937);
-  }
-  /* parser/parser.nit:18939 */
-  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, 18939);
-  }
-  /* parser/parser.nit:18941 */
-  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, 18941);
-  }
-  /* parser/parser.nit:18942 */
-  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:18950 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18951 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18951);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18956;
-  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:18958 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18959 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18960 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18961 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18962 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18963 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18964 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18968 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18969 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:18971 */
-  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, 18971);
-  }
-  /* parser/parser.nit:18973 */
-  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, 18973);
-  }
-  /* parser/parser.nit:18974 */
-  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:18976 */
-  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, 18976);
-  }
-  /* parser/parser.nit:18978 */
-  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, 18978);
-  }
-  /* parser/parser.nit:18980 */
-  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, 18980);
-  }
-  /* parser/parser.nit:18981 */
-  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:18989 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:18990 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 18990);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 18995;
-  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:18997 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:18998 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:18999 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19000 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19001 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19003 */
-  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, 19003);
-  }
-  /* parser/parser.nit:19005 */
-  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, 19005);
-  }
-  /* parser/parser.nit:19007 */
-  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, 19007);
-  }
-  /* parser/parser.nit:19008 */
-  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:19014 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19015 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19015);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19020;
-  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:19022 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19023 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19024 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19025 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19026 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19027 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19029 */
-  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, 19029);
-  }
-  /* parser/parser.nit:19031 */
-  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, 19031);
-  }
-  /* parser/parser.nit:19033 */
-  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, 19033);
-  }
-  /* parser/parser.nit:19035 */
-  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, 19035);
-  }
-  /* parser/parser.nit:19036 */
-  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:19042 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19043 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19043);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19048;
-  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:19050 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19051 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19052 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19054 */
-  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, 19054);
-  }
-  /* parser/parser.nit:19056 */
-  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, 19056);
-  }
-  /* parser/parser.nit:19057 */
-  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:19063 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19064 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19064);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19069;
-  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:19071 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19072 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19073 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19074 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19076 */
-  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, 19076);
-  }
-  /* parser/parser.nit:19078 */
-  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, 19078);
-  }
-  /* parser/parser.nit:19080 */
-  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, 19080);
-  }
-  /* parser/parser.nit:19081 */
-  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:19087 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19088 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19088);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19093;
-  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:19095 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19096 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19097 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19099 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19100 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19100);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19105;
-  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:19107 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19108 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19109 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19110 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19111 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:19113 */
-  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, 19113);
-  }
-  /* parser/parser.nit:19115 */
-  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, 19115);
-  }
-  /* parser/parser.nit:19117 */
-  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, 19117);
-  }
-  /* parser/parser.nit:19118 */
-  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:19119 */
-  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:19124 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:19125 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19125);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19130;
-  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:19132 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19133 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19134 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19135 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19136 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19137 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19138 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19139 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19140 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19141 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19142 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19143 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19145 */
-  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, 19145);
-  }
-  /* parser/parser.nit:19147 */
-  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, 19147);
-  }
-  /* parser/parser.nit:19149 */
-  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, 19149);
-  }
-  /* parser/parser.nit:19151 */
-  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, 19151);
-  }
-  /* parser/parser.nit:19153 */
-  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, 19153);
-  }
-  /* parser/parser.nit:19155 */
-  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, 19155);
-  }
-  /* parser/parser.nit:19156 */
-  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:19164 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19165 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19165);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19170;
-  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:19172 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19173 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19174 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19175 */
-  fra.me.REG[4] = 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:19178 */
-  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, 19178);
-  }
-  /* parser/parser.nit:19180 */
-  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, 19180);
-  }
-  /* parser/parser.nit:19181 */
-  fra.me.REG[3] = NEW_AOrExpr_parser___parser_prod___AOrExpr___init_aorexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19185 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19186 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19186);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19191;
-  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:19193 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19194 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19195 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19196 */
-  fra.me.REG[4] = 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:19199 */
-  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, 19199);
-  }
-  /* parser/parser.nit:19201 */
-  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, 19201);
-  }
-  /* parser/parser.nit:19202 */
-  fra.me.REG[3] = NEW_AAndExpr_parser___parser_prod___AAndExpr___init_aandexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19206 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19207 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19207);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19212;
-  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:19214 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19215 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19216 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19217 */
-  fra.me.REG[4] = 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:19221 */
-  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, 19221);
-  }
-  /* parser/parser.nit:19223 */
-  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, 19223);
-  }
-  /* parser/parser.nit:19224 */
-  fra.me.REG[3] = NEW_AOrElseExpr_parser___parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19228 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19229 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19229);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19234;
-  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:19236 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19237 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19238 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19239 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19241 */
-  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, 19241);
-  }
-  /* parser/parser.nit:19243 */
-  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, 19243);
-  }
-  /* parser/parser.nit:19244 */
-  fra.me.REG[3] = NEW_ANotExpr_parser___parser_prod___ANotExpr___init_anotexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19248 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19249 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19249);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19254;
-  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:19256 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19257 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19258 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19259 */
-  fra.me.REG[4] = 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:19262 */
-  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, 19262);
-  }
-  /* parser/parser.nit:19264 */
-  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, 19264);
-  }
-  /* parser/parser.nit:19265 */
-  fra.me.REG[3] = NEW_AEqExpr_parser___parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19269 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19270 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19270);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19275;
-  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:19277 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19278 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19279 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19280 */
-  fra.me.REG[4] = 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:19283 */
-  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, 19283);
-  }
-  /* parser/parser.nit:19285 */
-  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, 19285);
-  }
-  /* parser/parser.nit:19286 */
-  fra.me.REG[3] = NEW_AEeExpr_parser___parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19290 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19291 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19291);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19296;
-  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:19298 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19299 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19300 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19301 */
-  fra.me.REG[4] = 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:19304 */
-  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, 19304);
-  }
-  /* parser/parser.nit:19306 */
-  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, 19306);
-  }
-  /* parser/parser.nit:19307 */
-  fra.me.REG[3] = NEW_ANeExpr_parser___parser_prod___ANeExpr___init_aneexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19311 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19312 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19312);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19317;
-  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:19319 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19320 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19321 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19322 */
-  fra.me.REG[4] = 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:19325 */
-  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, 19325);
-  }
-  /* parser/parser.nit:19327 */
-  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, 19327);
-  }
-  /* parser/parser.nit:19328 */
-  fra.me.REG[3] = NEW_ALtExpr_parser___parser_prod___ALtExpr___init_altexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19332 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19333 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19333);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19338;
-  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:19340 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19341 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19342 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19343 */
-  fra.me.REG[4] = 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:19346 */
-  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, 19346);
-  }
-  /* parser/parser.nit:19348 */
-  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, 19348);
-  }
-  /* parser/parser.nit:19349 */
-  fra.me.REG[3] = NEW_ALeExpr_parser___parser_prod___ALeExpr___init_aleexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19353 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19354 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19354);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19359;
-  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:19361 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19362 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19363 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19364 */
-  fra.me.REG[4] = 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:19367 */
-  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, 19367);
-  }
-  /* parser/parser.nit:19369 */
-  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, 19369);
-  }
-  /* parser/parser.nit:19370 */
-  fra.me.REG[3] = NEW_ALlExpr_parser___parser_prod___ALlExpr___init_allexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19374 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19375 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19375);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19380;
-  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:19382 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19383 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19384 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19385 */
-  fra.me.REG[4] = 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:19388 */
-  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, 19388);
-  }
-  /* parser/parser.nit:19390 */
-  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, 19390);
-  }
-  /* parser/parser.nit:19391 */
-  fra.me.REG[3] = NEW_AGtExpr_parser___parser_prod___AGtExpr___init_agtexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19395 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19396 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19396);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19401;
-  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:19403 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19404 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19405 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19406 */
-  fra.me.REG[4] = 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:19409 */
-  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, 19409);
-  }
-  /* parser/parser.nit:19411 */
-  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, 19411);
-  }
-  /* parser/parser.nit:19412 */
-  fra.me.REG[3] = NEW_AGeExpr_parser___parser_prod___AGeExpr___init_ageexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19416 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19417 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19417);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19422;
-  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:19424 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19425 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19426 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19427 */
-  fra.me.REG[4] = 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:19430 */
-  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, 19430);
-  }
-  /* parser/parser.nit:19432 */
-  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, 19432);
-  }
-  /* parser/parser.nit:19433 */
-  fra.me.REG[3] = NEW_AGgExpr_parser___parser_prod___AGgExpr___init_aggexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19437 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19438 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19438);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19443;
-  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:19445 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19446 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19447 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19448 */
-  fra.me.REG[4] = 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:19451 */
-  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, 19451);
-  }
-  /* parser/parser.nit:19453 */
-  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, 19453);
-  }
-  /* parser/parser.nit:19454 */
-  fra.me.REG[3] = NEW_AStarshipExpr_parser___parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19458 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19459 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19459);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19464;
-  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:19466 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19467 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19468 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19469 */
-  fra.me.REG[4] = 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:19472 */
-  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, 19472);
-  }
-  /* parser/parser.nit:19474 */
-  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, 19474);
-  }
-  /* parser/parser.nit:19475 */
-  fra.me.REG[3] = NEW_AIsaExpr_parser___parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19479 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19480 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19480);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19485;
-  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:19487 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19488 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19489 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19490 */
-  fra.me.REG[4] = 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:19493 */
-  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, 19493);
-  }
-  /* parser/parser.nit:19495 */
-  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, 19495);
-  }
-  /* parser/parser.nit:19496 */
-  fra.me.REG[3] = NEW_APlusExpr_parser___parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19500 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19501 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19501);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19506;
-  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:19508 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19509 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19510 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19511 */
-  fra.me.REG[4] = 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:19514 */
-  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, 19514);
-  }
-  /* parser/parser.nit:19516 */
-  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, 19516);
-  }
-  /* parser/parser.nit:19517 */
-  fra.me.REG[3] = NEW_AMinusExpr_parser___parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19521 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19522 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19522);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19527;
-  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:19529 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19530 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19531 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19532 */
-  fra.me.REG[4] = 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:19535 */
-  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, 19535);
-  }
-  /* parser/parser.nit:19537 */
-  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, 19537);
-  }
-  /* parser/parser.nit:19538 */
-  fra.me.REG[3] = NEW_AStarExpr_parser___parser_prod___AStarExpr___init_astarexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19542 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19543 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19543);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19548;
-  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:19550 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19551 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19552 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19553 */
-  fra.me.REG[4] = 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:19556 */
-  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, 19556);
-  }
-  /* parser/parser.nit:19558 */
-  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, 19558);
-  }
-  /* parser/parser.nit:19559 */
-  fra.me.REG[3] = NEW_ASlashExpr_parser___parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19563 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19564 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19564);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19569;
-  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:19571 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19572 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19573 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19574 */
-  fra.me.REG[4] = 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:19577 */
-  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, 19577);
-  }
-  /* parser/parser.nit:19579 */
-  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, 19579);
-  }
-  /* parser/parser.nit:19580 */
-  fra.me.REG[3] = NEW_APercentExpr_parser___parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19584 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19585 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19585);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19590;
-  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:19592 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19593 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19594 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19595 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19597 */
-  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, 19597);
-  }
-  /* parser/parser.nit:19599 */
-  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, 19599);
-  }
-  /* parser/parser.nit:19600 */
-  fra.me.REG[3] = NEW_AUminusExpr_parser___parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19604 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19605 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19605);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19610;
-  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:19612 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19613 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19614 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19615 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19617 */
-  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, 19617);
-  }
-  /* parser/parser.nit:19619 */
-  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, 19619);
-  }
-  /* parser/parser.nit:19620 */
-  fra.me.REG[3] = NEW_AOnceExpr_parser___parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19624 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19625 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19625);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19630;
-  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:19632 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19633 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19634 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19635 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19636 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19638 */
-  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, 19638);
-  }
-  /* parser/parser.nit:19640 */
-  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, 19640);
-  }
-  /* parser/parser.nit:19642 */
-  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, 19642);
-  }
-  /* parser/parser.nit:19643 */
-  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:19649 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19650 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19650);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19655;
-  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:19657 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19658 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19659 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19660 */
-  fra.me.REG[4] = 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[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19664 */
-  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, 19664);
-  }
-  /* parser/parser.nit:19666 */
-  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, 19666);
-  }
-  /* parser/parser.nit:19668 */
-  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, 19668);
-  }
-  /* parser/parser.nit:19669 */
-  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:19674 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19675 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19675);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19680;
-  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:19682 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19683 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19684 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19686 */
-  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, 19686);
-  }
-  /* parser/parser.nit:19687 */
-  fra.me.REG[5] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:19689 */
-  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, 19689);
-  }
-  /* parser/parser.nit:19690 */
-  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:19695 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19696 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19696);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19701;
-  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:19703 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19704 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19705 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19706 */
-  fra.me.REG[4] = 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:19709 */
-  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, 19709);
-  }
-  /* parser/parser.nit:19711 */
-  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, 19711);
-  }
-  /* parser/parser.nit:19712 */
-  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19716 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19717 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19717);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19722;
-  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:19724 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19725 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19726 */
-  fra.me.REG[4] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:19728 */
-  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, 19728);
-  }
-  /* parser/parser.nit:19729 */
-  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19733 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19734 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19734);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19739;
-  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:19741 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19742 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19743 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19744 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:19746 */
-  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, 19746);
-  }
-  /* parser/parser.nit:19748 */
-  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, 19748);
-  }
-  /* parser/parser.nit:19749 */
-  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:19754 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:19755 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19755);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19760;
-  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:19762 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19763 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19764 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19765 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19766 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19769 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19771 */
-  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, 19771);
-  }
-  /* parser/parser.nit:19773 */
-  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, 19773);
-  }
-  /* parser/parser.nit:19775 */
-  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, 19775);
-  }
-  /* parser/parser.nit:19777 */
-  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, 19777);
-  }
-  /* parser/parser.nit:19778 */
-  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:19784 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19785 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19785);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19790;
-  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:19792 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19793 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19794 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19795 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19796 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19797 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19801 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19803 */
-  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, 19803);
-  }
-  /* parser/parser.nit:19805 */
-  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, 19805);
-  }
-  /* parser/parser.nit:19807 */
-  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, 19807);
-  }
-  /* parser/parser.nit:19809 */
-  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, 19809);
-  }
-  /* parser/parser.nit:19810 */
-  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:19817 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19818 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19818);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19823;
-  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:19825 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19826 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19827 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19828 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19829 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19830 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19831 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19835 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19837 */
-  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, 19837);
-  }
-  /* parser/parser.nit:19839 */
-  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, 19839);
-  }
-  /* parser/parser.nit:19841 */
-  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, 19841);
-  }
-  /* parser/parser.nit:19843 */
-  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, 19843);
-  }
-  /* parser/parser.nit:19845 */
-  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, 19845);
-  }
-  /* parser/parser.nit:19846 */
-  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:19853 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19854 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19854);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19859;
-  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:19861 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19862 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19863 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19864 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19865 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19866 */
-  fra.me.REG[5] = 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[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19870 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19872 */
-  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, 19872);
-  }
-  /* parser/parser.nit:19874 */
-  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, 19874);
-  }
-  /* parser/parser.nit:19876 */
-  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, 19876);
-  }
-  /* parser/parser.nit:19878 */
-  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, 19878);
-  }
-  /* parser/parser.nit:19879 */
-  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:19886 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19887 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19887);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19892;
-  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:19894 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19895 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19896 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19897 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19898 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19899 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19900 */
-  fra.me.REG[6] = 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[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19904 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19906 */
-  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, 19906);
-  }
-  /* parser/parser.nit:19908 */
-  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, 19908);
-  }
-  /* parser/parser.nit:19910 */
-  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, 19910);
-  }
-  /* parser/parser.nit:19912 */
-  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, 19912);
-  }
-  /* parser/parser.nit:19914 */
-  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, 19914);
-  }
-  /* parser/parser.nit:19915 */
-  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:19922 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19923 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19923);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19928;
-  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:19930 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19931 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19933 */
-  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, 19933);
-  }
-  /* parser/parser.nit:19934 */
-  fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19938 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19939 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19939);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19944;
-  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:19946 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19947 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19948 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19950 */
-  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, 19950);
-  }
-  /* parser/parser.nit:19952 */
-  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, 19952);
-  }
-  /* parser/parser.nit:19953 */
-  fra.me.REG[3] = NEW_AArrayExpr_parser___parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19957 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19958 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19958);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19963;
-  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:19965 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19966 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19968 */
-  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, 19968);
-  }
-  /* parser/parser.nit:19969 */
-  fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:19973 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19974 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19974);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19979;
-  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:19981 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:19982 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19983 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:19985 */
-  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, 19985);
-  }
-  /* parser/parser.nit:19987 */
-  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, 19987);
-  }
-  /* parser/parser.nit:19988 */
-  fra.me.REG[3] = NEW_ASelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:19992 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:19993 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 19993);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 19998;
-  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:20000 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20001 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20003 */
-  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, 20003);
-  }
-  /* parser/parser.nit:20004 */
-  fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20008 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20009 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20009);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20014;
-  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:20016 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20017 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20018 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20020 */
-  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, 20020);
-  }
-  /* parser/parser.nit:20022 */
-  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, 20022);
-  }
-  /* parser/parser.nit:20023 */
-  fra.me.REG[3] = NEW_ATrueExpr_parser___parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20027 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20028 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20028);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20033;
-  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:20035 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20036 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20038 */
-  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, 20038);
-  }
-  /* parser/parser.nit:20039 */
-  fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20043 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20044 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20044);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20049;
-  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:20051 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20052 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20053 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20055 */
-  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, 20055);
-  }
-  /* parser/parser.nit:20057 */
-  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, 20057);
-  }
-  /* parser/parser.nit:20058 */
-  fra.me.REG[3] = NEW_AFalseExpr_parser___parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20062 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20063 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20063);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20068;
-  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:20070 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20071 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20073 */
-  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, 20073);
-  }
-  /* parser/parser.nit:20074 */
-  fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20078 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20079 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20079);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20084;
-  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:20086 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20087 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20088 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20090 */
-  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, 20090);
-  }
-  /* parser/parser.nit:20092 */
-  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, 20092);
-  }
-  /* parser/parser.nit:20093 */
-  fra.me.REG[3] = NEW_ANullExpr_parser___parser_prod___ANullExpr___init_anullexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20097 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20098 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20098);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20103;
-  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:20105 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20106 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20108 */
-  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, 20108);
-  }
-  /* parser/parser.nit:20109 */
-  fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20113 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20114 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20114);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20119;
-  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:20121 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20122 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20123 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20125 */
-  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, 20125);
-  }
-  /* parser/parser.nit:20127 */
-  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, 20127);
-  }
-  /* parser/parser.nit:20128 */
-  fra.me.REG[3] = NEW_AIntExpr_parser___parser_prod___AIntExpr___init_aintexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20132 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20133 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20133);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20138;
-  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:20140 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20141 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20143 */
-  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, 20143);
-  }
-  /* parser/parser.nit:20144 */
-  fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20148 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20149 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20149);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20154;
-  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:20156 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20157 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20158 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20160 */
-  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, 20160);
-  }
-  /* parser/parser.nit:20162 */
-  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, 20162);
-  }
-  /* parser/parser.nit:20163 */
-  fra.me.REG[3] = NEW_AFloatExpr_parser___parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20167 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20168 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20168);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20173;
-  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:20175 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20176 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20178 */
-  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, 20178);
-  }
-  /* parser/parser.nit:20179 */
-  fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20183 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20184 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20184);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20189;
-  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:20191 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20192 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20193 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20195 */
-  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, 20195);
-  }
-  /* parser/parser.nit:20197 */
-  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, 20197);
-  }
-  /* parser/parser.nit:20198 */
-  fra.me.REG[3] = NEW_ACharExpr_parser___parser_prod___ACharExpr___init_acharexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20202 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20203 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20203);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20208;
-  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:20210 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20211 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20213 */
-  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, 20213);
-  }
-  /* parser/parser.nit:20214 */
-  fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[3], NIT_NULL);
-  /* parser/parser.nit:20218 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20219 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20219);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20224;
-  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:20226 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20227 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20228 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20230 */
-  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, 20230);
-  }
-  /* parser/parser.nit:20232 */
-  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, 20232);
-  }
-  /* parser/parser.nit:20233 */
-  fra.me.REG[3] = NEW_AStringExpr_parser___parser_prod___AStringExpr___init_astringexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:20237 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20238 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20238);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20243;
-  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:20245 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20246 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20247 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20248 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20250 */
-  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, 20250);
-  }
-  /* parser/parser.nit:20252 */
-  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, 20252);
-  }
-  /* parser/parser.nit:20254 */
-  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, 20254);
-  }
-  /* parser/parser.nit:20255 */
-  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:20261 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20262 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20262);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20267;
-  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:20269 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20270 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20271 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20272 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20273 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20275 */
-  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, 20275);
-  }
-  /* parser/parser.nit:20277 */
-  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, 20277);
-  }
-  /* parser/parser.nit:20279 */
-  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, 20279);
-  }
-  /* parser/parser.nit:20281 */
-  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, 20281);
-  }
-  /* parser/parser.nit:20282 */
-  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:20288 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20289 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20289);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20294;
-  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:20296 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20297 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20298 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20299 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20300 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20301 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20302 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20303 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20304 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20305 */
-  fra.me.REG[7] = 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:20308 */
-  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, 20308);
-  }
-  /* parser/parser.nit:20310 */
-  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, 20310);
-  }
-  /* parser/parser.nit:20312 */
-  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, 20312);
-  }
-  /* parser/parser.nit:20314 */
-  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, 20314);
-  }
-  /* parser/parser.nit:20316 */
-  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, 20316);
-  }
-  /* parser/parser.nit:20317 */
-  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:20324 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20325 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20325);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20330;
-  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:20332 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20333 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20334 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20335 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20336 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20337 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20338 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20339 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20340 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20341 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20342 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20343 */
-  fra.me.REG[8] = 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:20346 */
-  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, 20346);
-  }
-  /* parser/parser.nit:20348 */
-  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, 20348);
-  }
-  /* parser/parser.nit:20350 */
-  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, 20350);
-  }
-  /* parser/parser.nit:20352 */
-  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, 20352);
-  }
-  /* parser/parser.nit:20354 */
-  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, 20354);
-  }
-  /* parser/parser.nit:20356 */
-  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, 20356);
-  }
-  /* parser/parser.nit:20357 */
-  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:20365 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20366 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20366);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20371;
-  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:20373 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20374 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20375 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20376 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20378 */
-  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, 20378);
-  }
-  /* parser/parser.nit:20380 */
-  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, 20380);
-  }
-  /* parser/parser.nit:20381 */
-  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:20382 */
-  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:20383 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:20385 */
-  fra.me.REG[5] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[5], NIT_NULL);
-  /* parser/parser.nit:20389 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20390 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20390);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20395;
-  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:20397 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20398 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20399 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20400 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20401 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20403 */
-  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, 20403);
-  }
-  /* parser/parser.nit:20405 */
-  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, 20405);
-  }
-  /* parser/parser.nit:20407 */
-  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, 20407);
-  }
-  /* parser/parser.nit:20408 */
-  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:20409 */
-  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:20410 */
-  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:20411 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:20413 */
-  fra.me.REG[6] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6], NIT_NULL);
-  /* parser/parser.nit:20417 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:20418 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20418);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20423;
-  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:20425 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20426 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20427 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20428 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20429 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20431 */
-  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, 20431);
-  }
-  /* parser/parser.nit:20433 */
-  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, 20433);
-  }
-  /* parser/parser.nit:20434 */
-  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:20435 */
-  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:20436 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:20439 */
-  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, 20439);
-  }
-  /* parser/parser.nit:20440 */
-  fra.me.REG[3] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6], fra.me.REG[3]);
-  /* parser/parser.nit:20444 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20445 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20445);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20450;
-  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:20452 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20453 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20454 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20455 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20456 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20457 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20459 */
-  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, 20459);
-  }
-  /* parser/parser.nit:20461 */
-  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, 20461);
-  }
-  /* parser/parser.nit:20463 */
-  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, 20463);
-  }
-  /* parser/parser.nit:20464 */
-  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:20465 */
-  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:20466 */
-  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:20467 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:20470 */
-  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, 20470);
-  }
-  /* parser/parser.nit:20471 */
-  fra.me.REG[3] = NEW_ASuperstringExpr_parser___parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[7], fra.me.REG[3]);
-  /* parser/parser.nit:20475 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20476 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20476);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20481;
-  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:20483 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20484 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20485 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20486 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20487 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20488 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20491 */
-  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:20492 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:20494 */
-  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:20495 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:20497 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20498 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20498);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20503;
-  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:20505 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20506 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20508 */
-  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, 20508);
-  }
-  /* parser/parser.nit:20509 */
-  fra.me.REG[3] = NEW_AStartStringExpr_parser___parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[3]);
-  /* parser/parser.nit:20512 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20513 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20513);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20518;
-  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:20520 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20521 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20523 */
-  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, 20523);
-  }
-  /* parser/parser.nit:20524 */
-  fra.me.REG[3] = NEW_AMidStringExpr_parser___parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[3]);
-  /* parser/parser.nit:20527 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20528 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20528);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20533;
-  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:20535 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20536 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20538 */
-  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, 20538);
-  }
-  /* parser/parser.nit:20539 */
-  fra.me.REG[3] = NEW_AEndStringExpr_parser___parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[3]);
-  /* parser/parser.nit:20542 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20543 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20543);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20548;
-  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:20550 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20551 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20552 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20553 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20555 */
-  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, 20555);
-  }
-  /* parser/parser.nit:20557 */
-  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, 20557);
-  }
-  /* parser/parser.nit:20558 */
-  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:20559 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:20561 */
-  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:20567 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20568 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20568);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20573;
-  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:20575 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20576 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20577 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20578 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20579 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20580 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20582 */
-  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, 20582);
-  }
-  /* parser/parser.nit:20584 */
-  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, 20584);
-  }
-  /* parser/parser.nit:20586 */
-  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, 20586);
-  }
-  /* parser/parser.nit:20587 */
-  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:20589 */
-  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, 20589);
-  }
-  /* parser/parser.nit:20590 */
-  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:20596 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20597 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20597);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20602;
-  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:20604 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20605 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20606 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20608 */
-  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, 20608);
-  }
-  /* parser/parser.nit:20609 */
-  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:20616 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20617 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20617);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20622;
-  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:20624 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20625 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20626 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20627 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20629 */
-  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, 20629);
-  }
-  /* parser/parser.nit:20631 */
-  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, 20631);
-  }
-  /* parser/parser.nit:20632 */
-  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:20639 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20640 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20640);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20645;
-  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:20647 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20648 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20649 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20650 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20651 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20652 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20654 */
-  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, 20654);
-  }
-  /* parser/parser.nit:20656 */
-  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, 20656);
-  }
-  /* parser/parser.nit:20658 */
-  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, 20658);
-  }
-  /* parser/parser.nit:20659 */
-  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:20661 */
-  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, 20661);
-  }
-  /* parser/parser.nit:20662 */
-  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:20669 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20670 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20670);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20675;
-  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:20677 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20678 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20679 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20680 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20681 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20682 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20683 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20685 */
-  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, 20685);
-  }
-  /* parser/parser.nit:20687 */
-  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, 20687);
-  }
-  /* parser/parser.nit:20689 */
-  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, 20689);
-  }
-  /* parser/parser.nit:20690 */
-  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:20692 */
-  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, 20692);
-  }
-  /* parser/parser.nit:20694 */
-  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, 20694);
-  }
-  /* parser/parser.nit:20695 */
-  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:20702 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20703 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20703);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20708;
-  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:20710 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20711 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20712 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20714 */
-  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, 20714);
-  }
-  /* parser/parser.nit:20715 */
-  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:20716 */
-  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:20722 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20723 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20723);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20728;
-  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:20730 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20731 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20732 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20734 */
-  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:20735 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:20737 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20738 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20738);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20743;
-  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:20745 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20746 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20747 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20748 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20751 */
-  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, 20751);
-  }
-  /* parser/parser.nit:20752 */
-  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:20753 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:20755 */
-  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:20756 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20757 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20757);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20762;
-  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:20764 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20765 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20766 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20767 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20768 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20770 */
-  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, 20770);
-  }
-  /* parser/parser.nit:20771 */
-  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:20778 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20779 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20779);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20784;
-  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:20786 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20787 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20788 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20789 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20790 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20791 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20793 */
-  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, 20793);
-  }
-  /* parser/parser.nit:20795 */
-  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, 20795);
-  }
-  /* parser/parser.nit:20796 */
-  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:20803 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20804 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20804);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20809;
-  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:20811 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20812 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20813 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20814 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20815 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20816 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20817 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20818 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20820 */
-  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, 20820);
-  }
-  /* parser/parser.nit:20822 */
-  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, 20822);
-  }
-  /* parser/parser.nit:20824 */
-  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, 20824);
-  }
-  /* parser/parser.nit:20825 */
-  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:20827 */
-  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, 20827);
-  }
-  /* parser/parser.nit:20828 */
-  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:20835 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20836 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20836);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20841;
-  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:20843 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20844 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20845 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20846 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20847 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20848 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20849 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20850 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20851 */
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20853 */
-  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, 20853);
-  }
-  /* parser/parser.nit:20855 */
-  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, 20855);
-  }
-  /* parser/parser.nit:20857 */
-  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, 20857);
-  }
-  /* parser/parser.nit:20858 */
-  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:20860 */
-  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, 20860);
-  }
-  /* parser/parser.nit:20862 */
-  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, 20862);
-  }
-  /* parser/parser.nit:20863 */
-  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:20870 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20871 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20871);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20876;
-  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:20878 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20879 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20880 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20881 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20882 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20883 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20885 */
-  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, 20885);
-  }
-  /* parser/parser.nit:20887 */
-  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, 20887);
-  }
-  /* parser/parser.nit:20888 */
-  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:20889 */
-  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:20896 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20897 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20897);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20902;
-  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:20904 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20905 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20906 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20907 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20909 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20910 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20910);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20915;
-  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:20917 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20918 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20919 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20921 */
-  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:20922 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:20924 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:20925 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20925);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20930;
-  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:20932 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20933 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20934 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20935 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:20938 */
-  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, 20938);
-  }
-  /* parser/parser.nit:20939 */
-  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:20940 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:20942 */
-  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:20943 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:20944 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20944);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20949;
-  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:20951 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20952 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20953 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20954 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20956 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20957 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20957);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20962;
-  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:20964 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20965 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20967 */
-  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, 20967);
-  }
-  /* parser/parser.nit:20968 */
-  fra.me.REG[3] = NEW_ATypeAtArg_parser___parser_prod___ATypeAtArg___init_atypeatarg(fra.me.REG[3]);
-  /* parser/parser.nit:20971 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20972 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20972);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20977;
-  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:20979 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20980 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20982 */
-  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, 20982);
-  }
-  /* parser/parser.nit:20983 */
-  fra.me.REG[3] = NEW_AExprAtArg_parser___parser_prod___AExprAtArg___init_aexpratarg(fra.me.REG[3]);
-  /* parser/parser.nit:20986 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:20987 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 20987);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 20992;
-  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:20994 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:20995 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:20997 */
-  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, 20997);
-  }
-  /* parser/parser.nit:20998 */
-  fra.me.REG[3] = NEW_AAtAtArg_parser___parser_prod___AAtAtArg___init_aatatarg(fra.me.REG[3]);
-  /* parser/parser.nit:21001 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21002 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21002);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21007;
-  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:21009 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21010 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21012 */
-  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, 21012);
-  }
-  /* parser/parser.nit:21013 */
-  fra.me.REG[3] = NEW_AIdAtid_parser___parser_prod___AIdAtid___init_aidatid(fra.me.REG[3]);
-  /* parser/parser.nit:21016 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21017 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21017);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21022;
-  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:21024 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21025 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21027 */
-  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, 21027);
-  }
-  /* parser/parser.nit:21028 */
-  fra.me.REG[3] = NEW_AKwreadableAtid_parser___parser_prod___AKwreadableAtid___init_akwreadableatid(fra.me.REG[3]);
-  /* parser/parser.nit:21031 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21032 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21032);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21037;
-  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:21039 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21040 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21042 */
-  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, 21042);
-  }
-  /* parser/parser.nit:21043 */
-  fra.me.REG[3] = NEW_AKwwritableAtid_parser___parser_prod___AKwwritableAtid___init_akwwritableatid(fra.me.REG[3]);
-  /* parser/parser.nit:21046 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21047 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21047);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21052;
-  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:21054 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21055 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21057 */
-  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, 21057);
-  }
-  /* parser/parser.nit:21058 */
-  fra.me.REG[3] = NEW_AKwimportAtid_parser___parser_prod___AKwimportAtid___init_akwimportatid(fra.me.REG[3]);
-  /* parser/parser.nit:21061 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21062 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21062);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21067;
-  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:21069 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21070 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21071 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21072 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21073 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21074 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21076 */
-  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, 21076);
-  }
-  /* parser/parser.nit:21078 */
-  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, 21078);
-  }
-  /* parser/parser.nit:21079 */
-  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:21081 */
-  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, 21081);
-  }
-  /* parser/parser.nit:21082 */
-  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:21087 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21088 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21088);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21093;
-  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:21095 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21096 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21097 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21098 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21099 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21101 */
-  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, 21101);
-  }
-  /* parser/parser.nit:21103 */
-  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, 21103);
-  }
-  /* parser/parser.nit:21104 */
-  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:21109 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21110 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21110);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21115;
-  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:21117 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21118 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21119 */
-  fra.me.REG[3] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[3]);
-  /* parser/parser.nit:21122 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21123 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21123);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21128;
-  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:21130 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21131 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21132 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21134 */
-  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, 21134);
-  }
-  /* parser/parser.nit:21135 */
-  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:21136 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21138 */
-  fra.me.REG[4] = NEW_AListExprs_parser___parser_prod___AListExprs___init_alistexprs(fra.me.REG[4]);
-  /* parser/parser.nit:21141 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21142 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21142);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21147;
-  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:21149 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21150 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21151 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21152 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21153 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21154 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21156 */
-  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, 21156);
-  }
-  /* parser/parser.nit:21158 */
-  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, 21158);
-  }
-  /* parser/parser.nit:21159 */
-  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:21161 */
-  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, 21161);
-  }
-  /* parser/parser.nit:21162 */
-  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:21167 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21168 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21168);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21173;
-  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:21175 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21176 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21177 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21178 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21180 */
-  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:21181 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21183 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21184 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21184);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21189;
-  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:21191 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21192 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21193 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21194 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21195 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21198 */
-  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, 21198);
-  }
-  /* parser/parser.nit:21199 */
-  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:21200 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  }
-  /* parser/parser.nit:21202 */
-  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:21203 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21204 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21204);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21209;
-  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:21211 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21212 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21213 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21214 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21215 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21217 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21218 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21218);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21223;
-  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:21225 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21226 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21227 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21229 */
-  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:21230 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21232 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21233 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21233);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21238;
-  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:21240 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21241 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21242 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21243 */
-  fra.me.REG[4] = 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[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21248 */
-  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, 21248);
-  }
-  /* parser/parser.nit:21250 */
-  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:21251 */
-  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:21252 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21254 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21255 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21255);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21260;
-  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:21262 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21263 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21264 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21266 */
-  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, 21266);
-  }
-  /* parser/parser.nit:21267 */
-  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:21272 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21273 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21273);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21278;
-  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:21280 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21281 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21282 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21283 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21285 */
-  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, 21285);
-  }
-  /* parser/parser.nit:21286 */
-  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:21288 */
-  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, 21288);
-  }
-  /* parser/parser.nit:21289 */
-  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:21294 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21295 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21295);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21300;
-  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:21302 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21303 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21304 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21305 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21306 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21308 */
-  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, 21308);
-  }
-  /* parser/parser.nit:21310 */
-  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, 21310);
-  }
-  /* parser/parser.nit:21311 */
-  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:21316 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21317 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21317);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21322;
-  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:21324 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21325 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21326 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21327 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21328 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21329 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21331 */
-  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, 21331);
-  }
-  /* parser/parser.nit:21333 */
-  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, 21333);
-  }
-  /* parser/parser.nit:21334 */
-  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:21336 */
-  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, 21336);
-  }
-  /* parser/parser.nit:21337 */
-  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:21342 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21343 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21343);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21348;
-  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:21350 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21351 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21352 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21354 */
-  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, 21354);
-  }
-  /* parser/parser.nit:21355 */
-  fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21359 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21360 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21360);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21365;
-  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:21367 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21368 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21369 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21370 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21372 */
-  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, 21372);
-  }
-  /* parser/parser.nit:21373 */
-  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:21375 */
-  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, 21375);
-  }
-  /* parser/parser.nit:21376 */
-  fra.me.REG[3] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[5], fra.me.REG[3]);
-  /* parser/parser.nit:21380 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21381 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21381);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21386;
-  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:21388 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21389 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21390 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21392 */
-  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, 21392);
-  }
-  /* parser/parser.nit:21393 */
-  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:21394 */
-  fra.me.REG[4] = NEW_AQualified_parser___parser_prod___AQualified___init_aqualified(fra.me.REG[4], NIT_NULL);
-  /* parser/parser.nit:21398 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21399 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21399);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21404;
-  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:21406 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21407 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21408 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21409 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21411 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21412 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21412);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21417;
-  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:21419 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21420 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21421 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21422 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21424 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21425 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21425);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21430;
-  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:21432 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21433 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21434 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21434);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21439;
-  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:21441 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21442 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21443 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21445 */
-  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, 21445);
-  }
-  /* parser/parser.nit:21446 */
-  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:21447 */
-  fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
-  /* parser/parser.nit:21450 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21451 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21451);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21456;
-  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:21458 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21459 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21460 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21461 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21463 */
-  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, 21463);
-  }
-  /* parser/parser.nit:21464 */
-  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:21465 */
-  fra.me.REG[4] = NEW_ADoc_parser___parser_prod___ADoc___init_adoc(fra.me.REG[4]);
-  /* parser/parser.nit:21468 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21469 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21469);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21474;
-  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:21476 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21477 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21478 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21478);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21483;
-  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:21485 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21486 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21488 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21489 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21489);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21494;
-  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:21496 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21497 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21498 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21499 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21499);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21504;
-  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:21506 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21507 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21508 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21509 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21510 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21510);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21515;
-  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:21517 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21518 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21519 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21520 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21522 */
-  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, 21522);
-  }
-  /* parser/parser.nit:21524 */
-  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, 21524);
-  }
-  /* parser/parser.nit:21526 */
-  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, 21526);
-  }
-  /* parser/parser.nit:21527 */
-  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:21532 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21533 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21533);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21538;
-  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:21540 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21541 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21542 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21544 */
-  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, 21544);
-  }
-  /* parser/parser.nit:21546 */
-  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, 21546);
-  }
-  /* parser/parser.nit:21547 */
-  fra.me.REG[3] = NEW_AAttrExpr_parser___parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* parser/parser.nit:21551 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21552 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21552);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21557;
-  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:21559 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21560 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21561 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21562 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21563 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21565 */
-  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, 21565);
-  }
-  /* parser/parser.nit:21567 */
-  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, 21567);
-  }
-  /* parser/parser.nit:21569 */
-  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, 21569);
-  }
-  /* parser/parser.nit:21570 */
-  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:21576 */
-  fra.me.REG[2] = fra.me.REG[6];
-  /* parser/parser.nit:21577 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21577);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21582;
-  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:21584 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21585 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21586 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21587 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21589 */
-  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, 21589);
-  }
-  /* parser/parser.nit:21591 */
-  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, 21591);
-  }
-  /* parser/parser.nit:21593 */
-  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, 21593);
-  }
-  /* parser/parser.nit:21594 */
-  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:21599 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21600 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21600);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21605;
-  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:21607 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21608 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21609 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21610 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21612 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21613 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21613);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21618;
-  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:21620 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21621 */
-  fra.me.REG[3] = NEW_AImplicitSelfExpr_parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* parser/parser.nit:21622 */
-  fra.me.REG[2] = fra.me.REG[3];
-  /* parser/parser.nit:21623 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21623);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21628;
-  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:21630 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21631 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21632 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21634 */
-  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:21635 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21637 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21638 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21638);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21643;
-  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:21645 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21646 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21647 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21648 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21650 */
-  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, 21650);
-  }
-  /* parser/parser.nit:21652 */
-  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:21653 */
-  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:21654 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21656 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21657 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21657);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21662;
-  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:21664 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21665 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21666 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21668 */
-  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:21669 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21671 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21672 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21672);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21677;
-  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:21679 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21680 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21681 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21682 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21684 */
-  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, 21684);
-  }
-  /* parser/parser.nit:21686 */
-  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:21687 */
-  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:21688 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21690 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21691 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21691);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21696;
-  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:21698 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21699 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21700 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21702 */
-  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:21703 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21705 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21706 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21706);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21711;
-  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:21713 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21714 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21715 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21716 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21718 */
-  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, 21718);
-  }
-  /* parser/parser.nit:21720 */
-  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:21721 */
-  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:21722 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21724 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21725 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21725);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21730;
-  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:21732 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21733 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21734 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21736 */
-  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:21737 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21739 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21740 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21740);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21745;
-  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:21747 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21748 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21749 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21750 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21752 */
-  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, 21752);
-  }
-  /* parser/parser.nit:21754 */
-  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:21755 */
-  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:21756 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21758 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21759 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21759);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21764;
-  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:21766 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21767 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21768 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21770 */
-  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:21771 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21773 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21774 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21774);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21779;
-  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:21781 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21782 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21783 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21784 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21786 */
-  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, 21786);
-  }
-  /* parser/parser.nit:21788 */
-  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:21789 */
-  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:21790 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21792 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21793 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21793);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21798;
-  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:21800 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21801 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21802 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21804 */
-  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:21805 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21807 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21808 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21808);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21813;
-  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:21815 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21816 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21817 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21818 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21820 */
-  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, 21820);
-  }
-  /* parser/parser.nit:21822 */
-  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:21823 */
-  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:21824 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21826 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21827 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21827);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21832;
-  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:21834 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21835 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21836 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21838 */
-  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:21839 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21841 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21842 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21842);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21847;
-  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:21849 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21850 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21851 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21852 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21854 */
-  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, 21854);
-  }
-  /* parser/parser.nit:21856 */
-  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:21857 */
-  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:21858 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21860 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21861 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21861);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21866;
-  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:21868 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21869 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21870 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21872 */
-  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:21873 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21875 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21876 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21876);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21881;
-  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:21883 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21884 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21885 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21886 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21888 */
-  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, 21888);
-  }
-  /* parser/parser.nit:21890 */
-  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:21891 */
-  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:21892 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21894 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21895 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21895);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21900;
-  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:21902 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21903 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21904 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21906 */
-  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:21907 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21909 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21910 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21910);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21915;
-  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:21917 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21918 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21919 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21920 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21922 */
-  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, 21922);
-  }
-  /* parser/parser.nit:21924 */
-  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:21925 */
-  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:21926 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21928 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21929 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21929);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21934;
-  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:21936 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21937 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21938 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21939 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21941 */
-  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, 21941);
-  }
-  /* parser/parser.nit:21943 */
-  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:21944 */
-  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:21945 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21947 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21948 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21948);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21953;
-  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:21955 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21956 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21957 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21959 */
-  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:21960 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21962 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:21963 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21963);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21968;
-  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:21970 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21971 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21972 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21973 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21975 */
-  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, 21975);
-  }
-  /* parser/parser.nit:21977 */
-  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:21978 */
-  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:21979 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:21981 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:21982 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 21982);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 21987;
-  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:21989 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:21990 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21991 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:21992 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:21994 */
-  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, 21994);
-  }
-  /* parser/parser.nit:21996 */
-  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, 21996);
-  }
-  /* parser/parser.nit:21997 */
-  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:21998 */
-  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:21999 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22000 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22000);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22005;
-  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:22007 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22008 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22009 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22010 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22012 */
-  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, 22012);
-  }
-  /* parser/parser.nit:22014 */
-  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:22015 */
-  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:22016 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22018 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22019 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22019);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22024;
-  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:22026 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22027 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22028 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22029 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22031 */
-  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, 22031);
-  }
-  /* parser/parser.nit:22033 */
-  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:22034 */
-  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:22035 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22037 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22038 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22038);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22043;
-  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:22045 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22046 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22047 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22048 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22050 */
-  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, 22050);
-  }
-  /* parser/parser.nit:22052 */
-  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:22053 */
-  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:22054 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22056 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22057 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22057);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22062;
-  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:22064 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22065 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22066 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22068 */
-  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:22069 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22071 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:22072 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22072);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22077;
-  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:22079 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22080 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22081 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22082 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22084 */
-  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, 22084);
-  }
-  /* parser/parser.nit:22086 */
-  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:22087 */
-  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:22088 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22090 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22091 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22091);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22096;
-  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:22098 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22099 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22100 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22102 */
-  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:22103 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22105 */
-  fra.me.REG[2] = fra.me.REG[4];
-  /* parser/parser.nit:22106 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22106);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.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 = 22111;
-  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:22113 */
-  fra.me.REG[2] = NIT_NULL;
-  /* parser/parser.nit:22114 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22115 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* parser/parser.nit:22116 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* parser/parser.nit:22118 */
-  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, 22118);
-  }
-  /* parser/parser.nit:22120 */
-  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:22121 */
-  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:22122 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  }
-  /* parser/parser.nit:22124 */
-  fra.me.REG[2] = fra.me.REG[5];
-  /* parser/parser.nit:22125 */
-  REGB0 = TAG_Bool(ATTR_parser___ReduceAction____goto(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 22125);
-  }
-  REGB0 = ATTR_parser___ReduceAction____goto(fra.me.REG[0]);
-  REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  CALL_parser___Parser___push(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}