c_src: update for 0.4
authorJean Privat <jean@pryen.org>
Fri, 18 Feb 2011 21:14:07 +0000 (16:14 -0500)
committerJean Privat <jean@pryen.org>
Fri, 18 Feb 2011 21:14:07 +0000 (16:14 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

23 files changed:
c_src/abstract_collection._sep.c
c_src/abstractmetamodel._sep.c
c_src/abstractmetamodel._sep.h
c_src/lexer._sep.c
c_src/lexer._sep.h
c_src/mmbuilder._sep.c
c_src/mmbuilder._sep.h
c_src/nit_version._sep.c
c_src/nitc._build.sh
c_src/nitc._tables.c
c_src/nitc._tables.h [new file with mode: 0644]
c_src/opts._sep.c
c_src/opts._sep.h
c_src/parser._sep.c
c_src/parser_nodes._sep.c
c_src/parser_nodes._sep.h
c_src/parser_prod._sep.c
c_src/parser_prod._sep.h
c_src/primitive_info._sep.c
c_src/rta_analysis._sep.c
c_src/syntax._sep.c
c_src/tables_nit.c
c_src/typing._sep.c

index b64027e..8a48c03 100644 (file)
@@ -210,8 +210,9 @@ val_t abstract_collection___NaiveCollection___length(val_t p0){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
+    REGB0 = TAG_Int(1);
     /* ./../lib/standard//kernel.nit:215 */
-    REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(closctx->REG[1]));
+    REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(REGB0));
     /* ./../lib/standard//collection//abstract_collection.nit:88 */
     closctx->REG[1] = REGB0;
     stack_frame_head = fra.me.prev;
index b4a3cae..77fb9d4 100644 (file)
@@ -1539,43 +1539,43 @@ void abstractmetamodel___MMGlobalClass___is_abstract__eq(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t abstractmetamodel___MMGlobalClass___is_universal(val_t p0){
+val_t abstractmetamodel___MMGlobalClass___is_enum(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_abstractmetamodel;
   fra.me.line = 302;
-  fra.me.meth = LOCATE_abstractmetamodel___MMGlobalClass___is_universal;
+  fra.me.meth = LOCATE_abstractmetamodel___MMGlobalClass___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./metamodel//abstractmetamodel.nit:302 */
-  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_universal(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_universal", LOCATE_abstractmetamodel, 302);
+    nit_abort("Uninitialized attribute %s", "_is_enum", LOCATE_abstractmetamodel, 302);
   }
-  REGB0 = ATTR_abstractmetamodel___MMGlobalClass____is_universal(fra.me.REG[0]);
+  REGB0 = ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-void abstractmetamodel___MMGlobalClass___is_universal__eq(val_t p0, val_t p1){
+void abstractmetamodel___MMGlobalClass___is_enum__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_abstractmetamodel;
   fra.me.line = 302;
-  fra.me.meth = LOCATE_abstractmetamodel___MMGlobalClass___is_universal__eq;
+  fra.me.meth = LOCATE_abstractmetamodel___MMGlobalClass___is_enum__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
   /* ./metamodel//abstractmetamodel.nit:302 */
-  ATTR_abstractmetamodel___MMGlobalClass____is_universal(fra.me.REG[0]) = REGB0;
+  ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
 }
index 42dd338..517b9e5 100644 (file)
@@ -100,7 +100,7 @@ extern const int SFT_abstractmetamodel[];
 #define ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 1))
 #define ATTR_abstractmetamodel___MMGlobalClass____is_interface(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 2))
 #define ATTR_abstractmetamodel___MMGlobalClass____is_abstract(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 3))
-#define ATTR_abstractmetamodel___MMGlobalClass____is_universal(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 4))
+#define ATTR_abstractmetamodel___MMGlobalClass____is_enum(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 4))
 #define ATTR_abstractmetamodel___MMGlobalClass____visibility_level(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 5))
 #define ATTR_abstractmetamodel___MMGlobalClass____mixin_of(recv) ATTR(recv, (SFT_abstractmetamodel[14] + 6))
 #define INIT_TABLE_POS_MMGlobalClass (SFT_abstractmetamodel[15] + 0)
@@ -114,8 +114,8 @@ extern const int SFT_abstractmetamodel[];
 #define CALL_abstractmetamodel___MMGlobalClass___is_interface__eq(recv) ((abstractmetamodel___MMGlobalClass___is_interface__eq_t)CALL((recv), (SFT_abstractmetamodel[15] + 8)))
 #define CALL_abstractmetamodel___MMGlobalClass___is_abstract(recv) ((abstractmetamodel___MMGlobalClass___is_abstract_t)CALL((recv), (SFT_abstractmetamodel[15] + 9)))
 #define CALL_abstractmetamodel___MMGlobalClass___is_abstract__eq(recv) ((abstractmetamodel___MMGlobalClass___is_abstract__eq_t)CALL((recv), (SFT_abstractmetamodel[15] + 10)))
-#define CALL_abstractmetamodel___MMGlobalClass___is_universal(recv) ((abstractmetamodel___MMGlobalClass___is_universal_t)CALL((recv), (SFT_abstractmetamodel[15] + 11)))
-#define CALL_abstractmetamodel___MMGlobalClass___is_universal__eq(recv) ((abstractmetamodel___MMGlobalClass___is_universal__eq_t)CALL((recv), (SFT_abstractmetamodel[15] + 12)))
+#define CALL_abstractmetamodel___MMGlobalClass___is_enum(recv) ((abstractmetamodel___MMGlobalClass___is_enum_t)CALL((recv), (SFT_abstractmetamodel[15] + 11)))
+#define CALL_abstractmetamodel___MMGlobalClass___is_enum__eq(recv) ((abstractmetamodel___MMGlobalClass___is_enum__eq_t)CALL((recv), (SFT_abstractmetamodel[15] + 12)))
 #define CALL_abstractmetamodel___MMGlobalClass___visibility_level(recv) ((abstractmetamodel___MMGlobalClass___visibility_level_t)CALL((recv), (SFT_abstractmetamodel[15] + 13)))
 #define CALL_abstractmetamodel___MMGlobalClass___visibility_level__eq(recv) ((abstractmetamodel___MMGlobalClass___visibility_level__eq_t)CALL((recv), (SFT_abstractmetamodel[15] + 14)))
 #define CALL_abstractmetamodel___MMGlobalClass___is_mixin(recv) ((abstractmetamodel___MMGlobalClass___is_mixin_t)CALL((recv), (SFT_abstractmetamodel[15] + 15)))
@@ -360,12 +360,12 @@ typedef val_t (*abstractmetamodel___MMGlobalClass___is_abstract_t)(val_t p0);
 static const char * const LOCATE_abstractmetamodel___MMGlobalClass___is_abstract__eq = "abstractmetamodel::MMGlobalClass::is_abstract=";
 void abstractmetamodel___MMGlobalClass___is_abstract__eq(val_t p0, val_t p1);
 typedef void (*abstractmetamodel___MMGlobalClass___is_abstract__eq_t)(val_t p0, val_t p1);
-static const char * const LOCATE_abstractmetamodel___MMGlobalClass___is_universal = "abstractmetamodel::MMGlobalClass::is_universal";
-val_t abstractmetamodel___MMGlobalClass___is_universal(val_t p0);
-typedef val_t (*abstractmetamodel___MMGlobalClass___is_universal_t)(val_t p0);
-static const char * const LOCATE_abstractmetamodel___MMGlobalClass___is_universal__eq = "abstractmetamodel::MMGlobalClass::is_universal=";
-void abstractmetamodel___MMGlobalClass___is_universal__eq(val_t p0, val_t p1);
-typedef void (*abstractmetamodel___MMGlobalClass___is_universal__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_abstractmetamodel___MMGlobalClass___is_enum = "abstractmetamodel::MMGlobalClass::is_enum";
+val_t abstractmetamodel___MMGlobalClass___is_enum(val_t p0);
+typedef val_t (*abstractmetamodel___MMGlobalClass___is_enum_t)(val_t p0);
+static const char * const LOCATE_abstractmetamodel___MMGlobalClass___is_enum__eq = "abstractmetamodel::MMGlobalClass::is_enum=";
+void abstractmetamodel___MMGlobalClass___is_enum__eq(val_t p0, val_t p1);
+typedef void (*abstractmetamodel___MMGlobalClass___is_enum__eq_t)(val_t p0, val_t p1);
 static const char * const LOCATE_abstractmetamodel___MMGlobalClass___visibility_level = "abstractmetamodel::MMGlobalClass::visibility_level";
 val_t abstractmetamodel___MMGlobalClass___visibility_level(val_t p0);
 typedef val_t (*abstractmetamodel___MMGlobalClass___visibility_level_t)(val_t p0);
index 20a6176..28bf0ca 100644 (file)
@@ -454,14 +454,14 @@ void lexer___TKwinterface___init_tk(val_t p0, val_t p1, int* init_table){
   init_table[itpos6] = 1;
   return;
 }
-val_t lexer___TKwuniversal___parser_index(val_t p0){
+val_t lexer___TKwenum___parser_index(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_lexer;
   fra.me.line = 110;
-  fra.me.meth = LOCATE_lexer___TKwuniversal___parser_index;
+  fra.me.meth = LOCATE_lexer___TKwenum___parser_index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
@@ -473,18 +473,15 @@ val_t lexer___TKwuniversal___parser_index(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-void lexer___TKwuniversal___init_tk(val_t p0, val_t p1, int* init_table){
-  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_TKwuniversal].i;
+void lexer___TKwenum___init_tk(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_TKwenum].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
   val_t tmp;
-  static val_t once_value_1; /* Once value */
-    static val_t once_value_2; /* Once value */
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_lexer;
   fra.me.line = 115;
-  fra.me.meth = LOCATE_lexer___TKwuniversal___init_tk;
+  fra.me.meth = LOCATE_lexer___TKwenum___init_tk;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
@@ -492,23 +489,11 @@ void lexer___TKwuniversal___init_tk(val_t p0, val_t p1, int* init_table){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
   /* ./parser//lexer.nit:117 */
-  if (!once_value_1) {
-    if (!once_value_2) {
-      fra.me.REG[2] = BOX_NativeString("universal");
-      REGB0 = TAG_Int(9);
-      fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_2 = fra.me.REG[2];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[2] = once_value_2;
-    fra.me.REG[2] = fra.me.REG[2];
-    once_value_1 = fra.me.REG[2];
-    register_static_object(&once_value_1);
-  } else fra.me.REG[2] = once_value_1;
-  fra.me.REG[2] = fra.me.REG[2];
-  ATTR_lexer___Token____text(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_lexer___Token____text(fra.me.REG[0]) = fra.me.REG[1];
   /* ./parser//lexer.nit:118 */
-  ATTR_parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser_nodes___ANode____location(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos7] = 1;
   return;
@@ -5416,11 +5401,6 @@ val_t lexer___Lexer___next(val_t p0){
   /* ./parser//lexer.nit:1266 */
   ATTR_lexer___Lexer____token(fra.me.REG[0]) = NIT_NULL;
   /* ./parser//lexer.nit:1267 */
-  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_lexer, 1267);
-  }
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -5992,1360 +5972,1363 @@ val_t lexer___Lexer___get_token(val_t p0){
         }
         if (UNTAG_Bool(REGB11)) {
           /* ./parser//lexer.nit:1391 */
-          fra.me.REG[4] = NEW_TKwuniversal_lexer___TKwuniversal___init_tk(fra.me.REG[2]);
+          REGB11 = TAG_Int(0);
+          fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB11, REGB5);
+          /* ./parser//lexer.nit:1392 */
+          fra.me.REG[4] = NEW_TKwenum_lexer___TKwenum___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1393 */
+        /* ./parser//lexer.nit:1394 */
         REGB11 = TAG_Int(9);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1393 */
+          /* ./parser//lexer.nit:1394 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1394 */
+          /* ./parser//lexer.nit:1395 */
           fra.me.REG[4] = NEW_TKwspecial_lexer___TKwspecial___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1396 */
+        /* ./parser//lexer.nit:1397 */
         REGB9 = TAG_Int(10);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1396 */
+          /* ./parser//lexer.nit:1397 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1397 */
+          /* ./parser//lexer.nit:1398 */
           fra.me.REG[4] = NEW_TKwend_lexer___TKwend___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1399 */
+        /* ./parser//lexer.nit:1400 */
         REGB11 = TAG_Int(11);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1399 */
+          /* ./parser//lexer.nit:1400 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1400 */
+          /* ./parser//lexer.nit:1401 */
           fra.me.REG[4] = NEW_TKwmeth_lexer___TKwmeth___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1402 */
+        /* ./parser//lexer.nit:1403 */
         REGB9 = TAG_Int(12);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1402 */
+          /* ./parser//lexer.nit:1403 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1403 */
+          /* ./parser//lexer.nit:1404 */
           fra.me.REG[4] = NEW_TKwtype_lexer___TKwtype___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1405 */
+        /* ./parser//lexer.nit:1406 */
         REGB11 = TAG_Int(13);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1405 */
+          /* ./parser//lexer.nit:1406 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1406 */
+          /* ./parser//lexer.nit:1407 */
           fra.me.REG[4] = NEW_TKwinit_lexer___TKwinit___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1408 */
+        /* ./parser//lexer.nit:1409 */
         REGB9 = TAG_Int(14);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1408 */
+          /* ./parser//lexer.nit:1409 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1409 */
+          /* ./parser//lexer.nit:1410 */
           fra.me.REG[4] = NEW_TKwredef_lexer___TKwredef___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1411 */
+        /* ./parser//lexer.nit:1412 */
         REGB11 = TAG_Int(15);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1411 */
+          /* ./parser//lexer.nit:1412 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1412 */
+          /* ./parser//lexer.nit:1413 */
           fra.me.REG[4] = NEW_TKwis_lexer___TKwis___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1414 */
+        /* ./parser//lexer.nit:1415 */
         REGB9 = TAG_Int(16);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1414 */
+          /* ./parser//lexer.nit:1415 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1415 */
+          /* ./parser//lexer.nit:1416 */
           fra.me.REG[4] = NEW_TKwdo_lexer___TKwdo___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1417 */
+        /* ./parser//lexer.nit:1418 */
         REGB11 = TAG_Int(17);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1417 */
+          /* ./parser//lexer.nit:1418 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1418 */
+          /* ./parser//lexer.nit:1419 */
           fra.me.REG[4] = NEW_TKwreadable_lexer___TKwreadable___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1420 */
+        /* ./parser//lexer.nit:1421 */
         REGB9 = TAG_Int(18);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1420 */
+          /* ./parser//lexer.nit:1421 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1421 */
+          /* ./parser//lexer.nit:1422 */
           fra.me.REG[4] = NEW_TKwwritable_lexer___TKwwritable___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1423 */
+        /* ./parser//lexer.nit:1424 */
         REGB11 = TAG_Int(19);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1423 */
+          /* ./parser//lexer.nit:1424 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1424 */
+          /* ./parser//lexer.nit:1425 */
           fra.me.REG[4] = NEW_TKwvar_lexer___TKwvar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1426 */
+        /* ./parser//lexer.nit:1427 */
         REGB9 = TAG_Int(20);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1426 */
+          /* ./parser//lexer.nit:1427 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1427 */
+          /* ./parser//lexer.nit:1428 */
           fra.me.REG[4] = NEW_TKwintern_lexer___TKwintern___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1429 */
+        /* ./parser//lexer.nit:1430 */
         REGB11 = TAG_Int(21);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1429 */
+          /* ./parser//lexer.nit:1430 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1430 */
+          /* ./parser//lexer.nit:1431 */
           fra.me.REG[4] = NEW_TKwextern_lexer___TKwextern___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1432 */
+        /* ./parser//lexer.nit:1433 */
         REGB9 = TAG_Int(22);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1432 */
+          /* ./parser//lexer.nit:1433 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1433 */
+          /* ./parser//lexer.nit:1434 */
           fra.me.REG[4] = NEW_TKwprotected_lexer___TKwprotected___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1435 */
+        /* ./parser//lexer.nit:1436 */
         REGB11 = TAG_Int(23);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1435 */
+          /* ./parser//lexer.nit:1436 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1436 */
+          /* ./parser//lexer.nit:1437 */
           fra.me.REG[4] = NEW_TKwprivate_lexer___TKwprivate___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1438 */
+        /* ./parser//lexer.nit:1439 */
         REGB9 = TAG_Int(24);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1438 */
+          /* ./parser//lexer.nit:1439 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1439 */
+          /* ./parser//lexer.nit:1440 */
           fra.me.REG[4] = NEW_TKwintrude_lexer___TKwintrude___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1441 */
+        /* ./parser//lexer.nit:1442 */
         REGB11 = TAG_Int(25);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1441 */
+          /* ./parser//lexer.nit:1442 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1442 */
+          /* ./parser//lexer.nit:1443 */
           fra.me.REG[4] = NEW_TKwif_lexer___TKwif___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1444 */
+        /* ./parser//lexer.nit:1445 */
         REGB9 = TAG_Int(26);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1444 */
+          /* ./parser//lexer.nit:1445 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1445 */
+          /* ./parser//lexer.nit:1446 */
           fra.me.REG[4] = NEW_TKwthen_lexer___TKwthen___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1447 */
+        /* ./parser//lexer.nit:1448 */
         REGB11 = TAG_Int(27);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1447 */
+          /* ./parser//lexer.nit:1448 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1448 */
+          /* ./parser//lexer.nit:1449 */
           fra.me.REG[4] = NEW_TKwelse_lexer___TKwelse___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1450 */
+        /* ./parser//lexer.nit:1451 */
         REGB9 = TAG_Int(28);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1450 */
+          /* ./parser//lexer.nit:1451 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1451 */
+          /* ./parser//lexer.nit:1452 */
           fra.me.REG[4] = NEW_TKwwhile_lexer___TKwwhile___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1453 */
+        /* ./parser//lexer.nit:1454 */
         REGB11 = TAG_Int(29);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1453 */
+          /* ./parser//lexer.nit:1454 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1454 */
+          /* ./parser//lexer.nit:1455 */
           fra.me.REG[4] = NEW_TKwloop_lexer___TKwloop___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1456 */
+        /* ./parser//lexer.nit:1457 */
         REGB9 = TAG_Int(30);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1456 */
+          /* ./parser//lexer.nit:1457 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1457 */
+          /* ./parser//lexer.nit:1458 */
           fra.me.REG[4] = NEW_TKwfor_lexer___TKwfor___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1459 */
+        /* ./parser//lexer.nit:1460 */
         REGB11 = TAG_Int(31);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1459 */
+          /* ./parser//lexer.nit:1460 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1460 */
+          /* ./parser//lexer.nit:1461 */
           fra.me.REG[4] = NEW_TKwin_lexer___TKwin___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1462 */
+        /* ./parser//lexer.nit:1463 */
         REGB9 = TAG_Int(32);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1462 */
+          /* ./parser//lexer.nit:1463 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1463 */
+          /* ./parser//lexer.nit:1464 */
           fra.me.REG[4] = NEW_TKwand_lexer___TKwand___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1465 */
+        /* ./parser//lexer.nit:1466 */
         REGB11 = TAG_Int(33);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1465 */
+          /* ./parser//lexer.nit:1466 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1466 */
+          /* ./parser//lexer.nit:1467 */
           fra.me.REG[4] = NEW_TKwor_lexer___TKwor___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1468 */
+        /* ./parser//lexer.nit:1469 */
         REGB9 = TAG_Int(34);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1468 */
+          /* ./parser//lexer.nit:1469 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1469 */
+          /* ./parser//lexer.nit:1470 */
           fra.me.REG[4] = NEW_TKwnot_lexer___TKwnot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1471 */
+        /* ./parser//lexer.nit:1472 */
         REGB11 = TAG_Int(35);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1471 */
+          /* ./parser//lexer.nit:1472 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1472 */
+          /* ./parser//lexer.nit:1473 */
           fra.me.REG[4] = NEW_TKwreturn_lexer___TKwreturn___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1474 */
+        /* ./parser//lexer.nit:1475 */
         REGB9 = TAG_Int(36);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1474 */
+          /* ./parser//lexer.nit:1475 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1475 */
+          /* ./parser//lexer.nit:1476 */
           fra.me.REG[4] = NEW_TKwcontinue_lexer___TKwcontinue___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1477 */
+        /* ./parser//lexer.nit:1478 */
         REGB11 = TAG_Int(37);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1477 */
+          /* ./parser//lexer.nit:1478 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1478 */
+          /* ./parser//lexer.nit:1479 */
           fra.me.REG[4] = NEW_TKwbreak_lexer___TKwbreak___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1480 */
+        /* ./parser//lexer.nit:1481 */
         REGB9 = TAG_Int(38);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1480 */
+          /* ./parser//lexer.nit:1481 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1481 */
+          /* ./parser//lexer.nit:1482 */
           fra.me.REG[4] = NEW_TKwabort_lexer___TKwabort___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1483 */
+        /* ./parser//lexer.nit:1484 */
         REGB11 = TAG_Int(39);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1483 */
+          /* ./parser//lexer.nit:1484 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1484 */
+          /* ./parser//lexer.nit:1485 */
           fra.me.REG[4] = NEW_TKwassert_lexer___TKwassert___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1486 */
+        /* ./parser//lexer.nit:1487 */
         REGB9 = TAG_Int(40);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1486 */
+          /* ./parser//lexer.nit:1487 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1487 */
+          /* ./parser//lexer.nit:1488 */
           fra.me.REG[4] = NEW_TKwnew_lexer___TKwnew___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1489 */
+        /* ./parser//lexer.nit:1490 */
         REGB11 = TAG_Int(41);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1489 */
+          /* ./parser//lexer.nit:1490 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1490 */
+          /* ./parser//lexer.nit:1491 */
           fra.me.REG[4] = NEW_TKwisa_lexer___TKwisa___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1492 */
+        /* ./parser//lexer.nit:1493 */
         REGB9 = TAG_Int(42);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1492 */
+          /* ./parser//lexer.nit:1493 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1493 */
+          /* ./parser//lexer.nit:1494 */
           fra.me.REG[4] = NEW_TKwonce_lexer___TKwonce___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1495 */
+        /* ./parser//lexer.nit:1496 */
         REGB11 = TAG_Int(43);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1495 */
+          /* ./parser//lexer.nit:1496 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1496 */
+          /* ./parser//lexer.nit:1497 */
           fra.me.REG[4] = NEW_TKwsuper_lexer___TKwsuper___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1498 */
+        /* ./parser//lexer.nit:1499 */
         REGB9 = TAG_Int(44);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1498 */
+          /* ./parser//lexer.nit:1499 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1499 */
+          /* ./parser//lexer.nit:1500 */
           fra.me.REG[4] = NEW_TKwself_lexer___TKwself___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1501 */
+        /* ./parser//lexer.nit:1502 */
         REGB11 = TAG_Int(45);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1501 */
+          /* ./parser//lexer.nit:1502 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1502 */
+          /* ./parser//lexer.nit:1503 */
           fra.me.REG[4] = NEW_TKwtrue_lexer___TKwtrue___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1504 */
+        /* ./parser//lexer.nit:1505 */
         REGB9 = TAG_Int(46);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1504 */
+          /* ./parser//lexer.nit:1505 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1505 */
+          /* ./parser//lexer.nit:1506 */
           fra.me.REG[4] = NEW_TKwfalse_lexer___TKwfalse___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1507 */
+        /* ./parser//lexer.nit:1508 */
         REGB11 = TAG_Int(47);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1507 */
+          /* ./parser//lexer.nit:1508 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1508 */
+          /* ./parser//lexer.nit:1509 */
           fra.me.REG[4] = NEW_TKwnull_lexer___TKwnull___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1510 */
+        /* ./parser//lexer.nit:1511 */
         REGB9 = TAG_Int(48);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1510 */
+          /* ./parser//lexer.nit:1511 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1511 */
+          /* ./parser//lexer.nit:1512 */
           fra.me.REG[4] = NEW_TKwas_lexer___TKwas___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1513 */
+        /* ./parser//lexer.nit:1514 */
         REGB11 = TAG_Int(49);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1513 */
+          /* ./parser//lexer.nit:1514 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1514 */
+          /* ./parser//lexer.nit:1515 */
           fra.me.REG[4] = NEW_TKwnullable_lexer___TKwnullable___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1516 */
+        /* ./parser//lexer.nit:1517 */
         REGB9 = TAG_Int(50);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1516 */
+          /* ./parser//lexer.nit:1517 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1517 */
+          /* ./parser//lexer.nit:1518 */
           fra.me.REG[4] = NEW_TKwisset_lexer___TKwisset___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1519 */
+        /* ./parser//lexer.nit:1520 */
         REGB11 = TAG_Int(51);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1519 */
+          /* ./parser//lexer.nit:1520 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1520 */
+          /* ./parser//lexer.nit:1521 */
           fra.me.REG[4] = NEW_TKwlabel_lexer___TKwlabel___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1522 */
+        /* ./parser//lexer.nit:1523 */
         REGB9 = TAG_Int(52);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1522 */
+          /* ./parser//lexer.nit:1523 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1523 */
+          /* ./parser//lexer.nit:1524 */
           fra.me.REG[4] = NEW_TOpar_lexer___TOpar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1525 */
+        /* ./parser//lexer.nit:1526 */
         REGB11 = TAG_Int(53);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1525 */
+          /* ./parser//lexer.nit:1526 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1526 */
+          /* ./parser//lexer.nit:1527 */
           fra.me.REG[4] = NEW_TCpar_lexer___TCpar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1528 */
+        /* ./parser//lexer.nit:1529 */
         REGB9 = TAG_Int(54);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1528 */
+          /* ./parser//lexer.nit:1529 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1529 */
+          /* ./parser//lexer.nit:1530 */
           fra.me.REG[4] = NEW_TObra_lexer___TObra___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1531 */
+        /* ./parser//lexer.nit:1532 */
         REGB11 = TAG_Int(55);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1531 */
+          /* ./parser//lexer.nit:1532 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1532 */
+          /* ./parser//lexer.nit:1533 */
           fra.me.REG[4] = NEW_TCbra_lexer___TCbra___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1534 */
+        /* ./parser//lexer.nit:1535 */
         REGB9 = TAG_Int(56);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1534 */
+          /* ./parser//lexer.nit:1535 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1535 */
+          /* ./parser//lexer.nit:1536 */
           fra.me.REG[4] = NEW_TComma_lexer___TComma___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1537 */
+        /* ./parser//lexer.nit:1538 */
         REGB11 = TAG_Int(57);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1537 */
+          /* ./parser//lexer.nit:1538 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1538 */
+          /* ./parser//lexer.nit:1539 */
           fra.me.REG[4] = NEW_TColumn_lexer___TColumn___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1540 */
+        /* ./parser//lexer.nit:1541 */
         REGB9 = TAG_Int(58);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1540 */
+          /* ./parser//lexer.nit:1541 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1541 */
+          /* ./parser//lexer.nit:1542 */
           fra.me.REG[4] = NEW_TQuad_lexer___TQuad___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1543 */
+        /* ./parser//lexer.nit:1544 */
         REGB11 = TAG_Int(59);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1543 */
+          /* ./parser//lexer.nit:1544 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1544 */
+          /* ./parser//lexer.nit:1545 */
           fra.me.REG[4] = NEW_TAssign_lexer___TAssign___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1546 */
+        /* ./parser//lexer.nit:1547 */
         REGB9 = TAG_Int(60);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1546 */
+          /* ./parser//lexer.nit:1547 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1547 */
+          /* ./parser//lexer.nit:1548 */
           fra.me.REG[4] = NEW_TPluseq_lexer___TPluseq___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1549 */
+        /* ./parser//lexer.nit:1550 */
         REGB11 = TAG_Int(61);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1549 */
+          /* ./parser//lexer.nit:1550 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1550 */
+          /* ./parser//lexer.nit:1551 */
           fra.me.REG[4] = NEW_TMinuseq_lexer___TMinuseq___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1552 */
+        /* ./parser//lexer.nit:1553 */
         REGB9 = TAG_Int(62);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1552 */
+          /* ./parser//lexer.nit:1553 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1553 */
+          /* ./parser//lexer.nit:1554 */
           fra.me.REG[4] = NEW_TDotdotdot_lexer___TDotdotdot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1555 */
+        /* ./parser//lexer.nit:1556 */
         REGB11 = TAG_Int(63);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1555 */
+          /* ./parser//lexer.nit:1556 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1556 */
+          /* ./parser//lexer.nit:1557 */
           fra.me.REG[4] = NEW_TDotdot_lexer___TDotdot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1558 */
+        /* ./parser//lexer.nit:1559 */
         REGB9 = TAG_Int(64);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1558 */
+          /* ./parser//lexer.nit:1559 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1559 */
+          /* ./parser//lexer.nit:1560 */
           fra.me.REG[4] = NEW_TDot_lexer___TDot___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1561 */
+        /* ./parser//lexer.nit:1562 */
         REGB11 = TAG_Int(65);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1561 */
+          /* ./parser//lexer.nit:1562 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1562 */
+          /* ./parser//lexer.nit:1563 */
           fra.me.REG[4] = NEW_TPlus_lexer___TPlus___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1564 */
+        /* ./parser//lexer.nit:1565 */
         REGB9 = TAG_Int(66);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1564 */
+          /* ./parser//lexer.nit:1565 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1565 */
+          /* ./parser//lexer.nit:1566 */
           fra.me.REG[4] = NEW_TMinus_lexer___TMinus___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1567 */
+        /* ./parser//lexer.nit:1568 */
         REGB11 = TAG_Int(67);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1567 */
+          /* ./parser//lexer.nit:1568 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1568 */
+          /* ./parser//lexer.nit:1569 */
           fra.me.REG[4] = NEW_TStar_lexer___TStar___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1570 */
+        /* ./parser//lexer.nit:1571 */
         REGB9 = TAG_Int(68);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1570 */
+          /* ./parser//lexer.nit:1571 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1571 */
+          /* ./parser//lexer.nit:1572 */
           fra.me.REG[4] = NEW_TSlash_lexer___TSlash___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1573 */
+        /* ./parser//lexer.nit:1574 */
         REGB11 = TAG_Int(69);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1573 */
+          /* ./parser//lexer.nit:1574 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1574 */
+          /* ./parser//lexer.nit:1575 */
           fra.me.REG[4] = NEW_TPercent_lexer___TPercent___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1576 */
+        /* ./parser//lexer.nit:1577 */
         REGB9 = TAG_Int(70);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1576 */
+          /* ./parser//lexer.nit:1577 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1577 */
+          /* ./parser//lexer.nit:1578 */
           fra.me.REG[4] = NEW_TEq_lexer___TEq___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1579 */
+        /* ./parser//lexer.nit:1580 */
         REGB11 = TAG_Int(71);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1579 */
+          /* ./parser//lexer.nit:1580 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1580 */
+          /* ./parser//lexer.nit:1581 */
           fra.me.REG[4] = NEW_TNe_lexer___TNe___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1582 */
+        /* ./parser//lexer.nit:1583 */
         REGB9 = TAG_Int(72);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1582 */
+          /* ./parser//lexer.nit:1583 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1583 */
+          /* ./parser//lexer.nit:1584 */
           fra.me.REG[4] = NEW_TLt_lexer___TLt___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1585 */
+        /* ./parser//lexer.nit:1586 */
         REGB11 = TAG_Int(73);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1585 */
+          /* ./parser//lexer.nit:1586 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1586 */
+          /* ./parser//lexer.nit:1587 */
           fra.me.REG[4] = NEW_TLe_lexer___TLe___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1588 */
+        /* ./parser//lexer.nit:1589 */
         REGB9 = TAG_Int(74);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1588 */
+          /* ./parser//lexer.nit:1589 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1589 */
+          /* ./parser//lexer.nit:1590 */
           fra.me.REG[4] = NEW_TLl_lexer___TLl___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1591 */
+        /* ./parser//lexer.nit:1592 */
         REGB11 = TAG_Int(75);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1591 */
+          /* ./parser//lexer.nit:1592 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1592 */
+          /* ./parser//lexer.nit:1593 */
           fra.me.REG[4] = NEW_TGt_lexer___TGt___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1594 */
+        /* ./parser//lexer.nit:1595 */
         REGB9 = TAG_Int(76);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1594 */
+          /* ./parser//lexer.nit:1595 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1595 */
+          /* ./parser//lexer.nit:1596 */
           fra.me.REG[4] = NEW_TGe_lexer___TGe___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1597 */
+        /* ./parser//lexer.nit:1598 */
         REGB11 = TAG_Int(77);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1597 */
+          /* ./parser//lexer.nit:1598 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1598 */
+          /* ./parser//lexer.nit:1599 */
           fra.me.REG[4] = NEW_TGg_lexer___TGg___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1600 */
+        /* ./parser//lexer.nit:1601 */
         REGB9 = TAG_Int(78);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1600 */
+          /* ./parser//lexer.nit:1601 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1601 */
+          /* ./parser//lexer.nit:1602 */
           fra.me.REG[4] = NEW_TStarship_lexer___TStarship___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1603 */
+        /* ./parser//lexer.nit:1604 */
         REGB11 = TAG_Int(79);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1603 */
+          /* ./parser//lexer.nit:1604 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1604 */
+          /* ./parser//lexer.nit:1605 */
           fra.me.REG[4] = NEW_TBang_lexer___TBang___init_tk(fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1606 */
+        /* ./parser//lexer.nit:1607 */
         REGB9 = TAG_Int(80);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1606 */
+          /* ./parser//lexer.nit:1607 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1607 */
+          /* ./parser//lexer.nit:1608 */
           REGB11 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB11, REGB5);
-          /* ./parser//lexer.nit:1608 */
+          /* ./parser//lexer.nit:1609 */
           fra.me.REG[4] = NEW_TClassid_lexer___TClassid___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1610 */
+        /* ./parser//lexer.nit:1611 */
         REGB11 = TAG_Int(81);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1610 */
+          /* ./parser//lexer.nit:1611 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1611 */
+          /* ./parser//lexer.nit:1612 */
           REGB9 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB9, REGB5);
-          /* ./parser//lexer.nit:1612 */
+          /* ./parser//lexer.nit:1613 */
           fra.me.REG[4] = NEW_TId_lexer___TId___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1614 */
+        /* ./parser//lexer.nit:1615 */
         REGB9 = TAG_Int(82);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1614 */
+          /* ./parser//lexer.nit:1615 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1615 */
+          /* ./parser//lexer.nit:1616 */
           REGB11 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB11, REGB5);
-          /* ./parser//lexer.nit:1616 */
+          /* ./parser//lexer.nit:1617 */
           fra.me.REG[4] = NEW_TAttrid_lexer___TAttrid___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1618 */
+        /* ./parser//lexer.nit:1619 */
         REGB11 = TAG_Int(83);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1618 */
+          /* ./parser//lexer.nit:1619 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1619 */
+          /* ./parser//lexer.nit:1620 */
           REGB9 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB9, REGB5);
-          /* ./parser//lexer.nit:1620 */
+          /* ./parser//lexer.nit:1621 */
           fra.me.REG[4] = NEW_TNumber_lexer___TNumber___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1622 */
+        /* ./parser//lexer.nit:1623 */
         REGB9 = TAG_Int(84);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1622 */
+          /* ./parser//lexer.nit:1623 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1623 */
+          /* ./parser//lexer.nit:1624 */
           REGB11 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB11, REGB5);
-          /* ./parser//lexer.nit:1624 */
+          /* ./parser//lexer.nit:1625 */
           fra.me.REG[4] = NEW_TFloat_lexer___TFloat___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1626 */
+        /* ./parser//lexer.nit:1627 */
         REGB11 = TAG_Int(85);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1626 */
+          /* ./parser//lexer.nit:1627 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1627 */
+          /* ./parser//lexer.nit:1628 */
           REGB9 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB9, REGB5);
-          /* ./parser//lexer.nit:1628 */
+          /* ./parser//lexer.nit:1629 */
           fra.me.REG[4] = NEW_TChar_lexer___TChar___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1630 */
+        /* ./parser//lexer.nit:1631 */
         REGB9 = TAG_Int(86);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1630 */
+          /* ./parser//lexer.nit:1631 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1631 */
+          /* ./parser//lexer.nit:1632 */
           REGB11 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB11, REGB5);
-          /* ./parser//lexer.nit:1632 */
+          /* ./parser//lexer.nit:1633 */
           fra.me.REG[4] = NEW_TString_lexer___TString___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1634 */
+        /* ./parser//lexer.nit:1635 */
         REGB11 = TAG_Int(87);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1634 */
+          /* ./parser//lexer.nit:1635 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1635 */
+          /* ./parser//lexer.nit:1636 */
           REGB9 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB9, REGB5);
-          /* ./parser//lexer.nit:1636 */
+          /* ./parser//lexer.nit:1637 */
           fra.me.REG[4] = NEW_TStartString_lexer___TStartString___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1638 */
+        /* ./parser//lexer.nit:1639 */
         REGB9 = TAG_Int(88);
         REGB11 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB9));
         if (UNTAG_Bool(REGB11)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB9 = TAG_Bool((REGB4)==(REGB9));
-          /* ./parser//lexer.nit:1638 */
+          /* ./parser//lexer.nit:1639 */
           REGB11 = REGB9;
         }
         if (UNTAG_Bool(REGB11)) {
-          /* ./parser//lexer.nit:1639 */
+          /* ./parser//lexer.nit:1640 */
           REGB11 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB11, REGB5);
-          /* ./parser//lexer.nit:1640 */
+          /* ./parser//lexer.nit:1641 */
           fra.me.REG[4] = NEW_TMidString_lexer___TMidString___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         }
-        /* ./parser//lexer.nit:1642 */
+        /* ./parser//lexer.nit:1643 */
         REGB11 = TAG_Int(89);
         REGB9 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB11));
         if (UNTAG_Bool(REGB9)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB11 = TAG_Bool((REGB4)==(REGB11));
-          /* ./parser//lexer.nit:1642 */
+          /* ./parser//lexer.nit:1643 */
           REGB9 = REGB11;
         }
         if (UNTAG_Bool(REGB9)) {
-          /* ./parser//lexer.nit:1643 */
+          /* ./parser//lexer.nit:1644 */
           REGB9 = TAG_Int(0);
           fra.me.REG[4] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB9, REGB5);
-          /* ./parser//lexer.nit:1644 */
+          /* ./parser//lexer.nit:1645 */
           fra.me.REG[2] = NEW_TEndString_lexer___TEndString___init_tk(fra.me.REG[4], fra.me.REG[2]);
           fra.me.REG[3] = fra.me.REG[2];
           goto label3;
         }
       } else {
-        /* ./parser//lexer.nit:1647 */
+        /* ./parser//lexer.nit:1648 */
         REGB9 = TAG_Bool(ATTR_lexer___Lexer____filename(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB9)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_filename", LOCATE_lexer, 1647);
+          nit_abort("Uninitialized attribute %s", "_filename", LOCATE_lexer, 1648);
         }
         fra.me.REG[2] = ATTR_lexer___Lexer____filename(fra.me.REG[0]);
         REGB9 = TAG_Int(1);
         /* ./../lib/standard//kernel.nit:215 */
         REGB9 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB9));
-        /* ./parser//lexer.nit:1647 */
+        /* ./parser//lexer.nit:1648 */
         REGB11 = TAG_Int(1);
         /* ./../lib/standard//kernel.nit:215 */
         REGB11 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB11));
-        /* ./parser//lexer.nit:1647 */
+        /* ./parser//lexer.nit:1648 */
         REGB10 = TAG_Int(1);
         /* ./../lib/standard//kernel.nit:215 */
         REGB10 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB10));
-        /* ./parser//lexer.nit:1647 */
+        /* ./parser//lexer.nit:1648 */
         REGB8 = TAG_Int(1);
         /* ./../lib/standard//kernel.nit:215 */
         REGB8 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB8));
-        /* ./parser//lexer.nit:1647 */
+        /* ./parser//lexer.nit:1648 */
         fra.me.REG[2] = NEW_Location_location___Location___init(fra.me.REG[2], REGB9, REGB11, REGB10, REGB8);
         /* ./../lib/standard//collection//array.nit:23 */
         REGB8 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -7354,13 +7337,13 @@ val_t lexer___Lexer___get_token(val_t p0){
           nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
         }
         REGB8 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./parser//lexer.nit:1648 */
+        /* ./parser//lexer.nit:1649 */
         REGB10 = TAG_Int(0);
         /* ./../lib/standard//kernel.nit:214 */
         REGB10 = TAG_Bool(UNTAG_Int(REGB8)>UNTAG_Int(REGB10));
-        /* ./parser//lexer.nit:1648 */
+        /* ./parser//lexer.nit:1649 */
         if (UNTAG_Bool(REGB10)) {
-          /* ./parser//lexer.nit:1649 */
+          /* ./parser//lexer.nit:1650 */
           REGB10 = TAG_Int(3);
           fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB10);
           if (!once_value_4) {
@@ -7385,28 +7368,19 @@ val_t lexer___Lexer___get_token(val_t p0){
           CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
           fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
           fra.me.REG[4] = NEW_AError_lexer___AError___init_error(fra.me.REG[4], fra.me.REG[2]);
-          /* ./parser//lexer.nit:1650 */
+          /* ./parser//lexer.nit:1651 */
           fra.me.REG[3] = fra.me.REG[4];
           goto label3;
         } else {
-          /* ./parser//lexer.nit:1652 */
-          fra.me.REG[2] = NEW_EOF_lexer___EOF___init(fra.me.REG[2]);
           /* ./parser//lexer.nit:1653 */
+          fra.me.REG[2] = NEW_EOF_lexer___EOF___init(fra.me.REG[2]);
+          /* ./parser//lexer.nit:1654 */
           fra.me.REG[3] = fra.me.REG[2];
           goto label3;
         }
       }
     }
-    /* ./parser//lexer.nit:1657 */
-    REGB10 = TAG_Bool(false);
-    if (UNTAG_Bool(REGB10)) {
-      goto label6;
-    }
   }
-  label6: while(0);
-  /* ./parser//lexer.nit:1659 */
-  fra.me.REG[3] = NIT_NULL;
-  goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
@@ -7420,93 +7394,93 @@ val_t lexer___Lexer___get_char(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_lexer;
-  fra.me.line = 1662;
+  fra.me.line = 1661;
   fra.me.meth = LOCATE_lexer___Lexer___get_char;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//lexer.nit:1666 */
+  /* ./parser//lexer.nit:1665 */
   REGB0 = TAG_Bool(ATTR_lexer___Lexer____eof(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_eof", LOCATE_lexer, 1666);
+    nit_abort("Uninitialized attribute %s", "_eof", LOCATE_lexer, 1665);
   }
   REGB0 = ATTR_lexer___Lexer____eof(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//lexer.nit:1667 */
+    /* ./parser//lexer.nit:1666 */
     REGB0 = TAG_Int(1);
     /* ./../lib/standard//kernel.nit:216 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-    /* ./parser//lexer.nit:1667 */
+    /* ./parser//lexer.nit:1666 */
     goto label1;
   }
-  /* ./parser//lexer.nit:1672 */
+  /* ./parser//lexer.nit:1671 */
   REGB1 = TAG_Bool(ATTR_lexer___Lexer____stream_pos(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1672);
+    nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1671);
   }
   REGB1 = ATTR_lexer___Lexer____stream_pos(fra.me.REG[0]);
-  /* ./parser//lexer.nit:1673 */
+  /* ./parser//lexer.nit:1672 */
   REGB2 = TAG_Int(0);
   /* ./../lib/standard//kernel.nit:213 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ./parser//lexer.nit:1673 */
+  /* ./parser//lexer.nit:1672 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./parser//lexer.nit:1674 */
+    /* ./parser//lexer.nit:1673 */
     REGB2 = TAG_Bool(ATTR_lexer___Lexer____stream_buf(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_stream_buf", LOCATE_lexer, 1674);
+      nit_abort("Uninitialized attribute %s", "_stream_buf", LOCATE_lexer, 1673);
     }
     fra.me.REG[1] = ATTR_lexer___Lexer____stream_buf(fra.me.REG[0]);
     REGB2 = TAG_Bool(ATTR_lexer___Lexer____stream_pos(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1674);
+      nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1673);
     }
     REGB2 = ATTR_lexer___Lexer____stream_pos(fra.me.REG[0]);
     REGB2 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB2);
-    /* ./parser//lexer.nit:1675 */
+    /* ./parser//lexer.nit:1674 */
     REGB3 = TAG_Int(1);
     /* ./../lib/standard//kernel.nit:217 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-    /* ./parser//lexer.nit:1675 */
+    /* ./parser//lexer.nit:1674 */
     ATTR_lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB3;
     /* ./../lib/standard//kernel.nit:382 */
     REGB2 = TAG_Int((unsigned char)UNTAG_Char(REGB2));
   } else {
-    /* ./parser//lexer.nit:1678 */
+    /* ./parser//lexer.nit:1677 */
     REGB3 = TAG_Bool(ATTR_lexer___Lexer____stream(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_stream", LOCATE_lexer, 1678);
+      nit_abort("Uninitialized attribute %s", "_stream", LOCATE_lexer, 1677);
     }
     fra.me.REG[1] = ATTR_lexer___Lexer____stream(fra.me.REG[0]);
     REGB3 = CALL_stream___IStream___read_char(fra.me.REG[1])(fra.me.REG[1]);
     REGB2 = REGB3;
   }
-  /* ./parser//lexer.nit:1681 */
+  /* ./parser//lexer.nit:1680 */
   REGB3 = TAG_Int(1);
   /* ./../lib/standard//kernel.nit:216 */
   REGB3 = TAG_Int(-UNTAG_Int(REGB3));
-  /* ./parser//lexer.nit:1681 */
+  /* ./parser//lexer.nit:1680 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
   if (UNTAG_Bool(REGB1)) {
   } else {
     /* ./../lib/standard//kernel.nit:207 */
     REGB3 = TAG_Bool((REGB2)==(REGB3));
-    /* ./parser//lexer.nit:1681 */
+    /* ./parser//lexer.nit:1680 */
     REGB1 = REGB3;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./parser//lexer.nit:1682 */
+    /* ./parser//lexer.nit:1681 */
     REGB1 = TAG_Bool(true);
     ATTR_lexer___Lexer____eof(fra.me.REG[0]) = REGB1;
   }
-  /* ./parser//lexer.nit:1685 */
+  /* ./parser//lexer.nit:1684 */
   REGB0 = REGB2;
   goto label1;
   label1: while(0);
@@ -7522,7 +7496,7 @@ void lexer___Lexer___push_back(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_lexer;
-  fra.me.line = 1688;
+  fra.me.line = 1687;
   fra.me.meth = LOCATE_lexer___Lexer___push_back;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -7531,11 +7505,11 @@ void lexer___Lexer___push_back(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//lexer.nit:1692 */
+  /* ./parser//lexer.nit:1691 */
   REGB1 = TAG_Bool(ATTR_lexer___Lexer____text(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_text", LOCATE_lexer, 1692);
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_lexer, 1691);
   }
   fra.me.REG[1] = ATTR_lexer___Lexer____text(fra.me.REG[0]);
   /* ./../lib/standard//collection//array.nit:23 */
@@ -7545,60 +7519,60 @@ void lexer___Lexer___push_back(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
   }
   REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./parser//lexer.nit:1693 */
+  /* ./parser//lexer.nit:1692 */
   REGB2 = TAG_Int(1);
   /* ./../lib/standard//kernel.nit:217 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./parser//lexer.nit:1694 */
+  /* ./parser//lexer.nit:1693 */
   while(1) {
     /* ./../lib/standard//kernel.nit:213 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-    /* ./parser//lexer.nit:1694 */
+    /* ./parser//lexer.nit:1693 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./parser//lexer.nit:1695 */
+      /* ./parser//lexer.nit:1694 */
       REGB1 = TAG_Bool(false);
       ATTR_lexer___Lexer____eof(fra.me.REG[0]) = REGB1;
-      /* ./parser//lexer.nit:1696 */
+      /* ./parser//lexer.nit:1695 */
       REGB1 = TAG_Bool(ATTR_lexer___Lexer____stream_pos(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1696);
+        nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1695);
       }
       REGB1 = ATTR_lexer___Lexer____stream_pos(fra.me.REG[0]);
       REGB3 = TAG_Int(1);
       /* ./../lib/standard//kernel.nit:215 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./parser//lexer.nit:1696 */
+      /* ./parser//lexer.nit:1695 */
       ATTR_lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB3;
-      /* ./parser//lexer.nit:1697 */
+      /* ./parser//lexer.nit:1696 */
       REGB3 = TAG_Bool(ATTR_lexer___Lexer____stream_buf(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_stream_buf", LOCATE_lexer, 1697);
+        nit_abort("Uninitialized attribute %s", "_stream_buf", LOCATE_lexer, 1696);
       }
       fra.me.REG[1] = ATTR_lexer___Lexer____stream_buf(fra.me.REG[0]);
       REGB3 = TAG_Bool(ATTR_lexer___Lexer____stream_pos(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1697);
+        nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_lexer, 1696);
       }
       REGB3 = ATTR_lexer___Lexer____stream_pos(fra.me.REG[0]);
       REGB1 = TAG_Bool(ATTR_lexer___Lexer____text(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_text", LOCATE_lexer, 1697);
+        nit_abort("Uninitialized attribute %s", "_text", LOCATE_lexer, 1696);
       }
       fra.me.REG[2] = ATTR_lexer___Lexer____text(fra.me.REG[0]);
       REGB1 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
       CALL_abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, REGB1);
-      /* ./parser//lexer.nit:1698 */
+      /* ./parser//lexer.nit:1697 */
       REGB1 = TAG_Int(1);
       /* ./../lib/standard//kernel.nit:217 */
       REGB1 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
-      /* ./parser//lexer.nit:1698 */
+      /* ./parser//lexer.nit:1697 */
       REGB2 = REGB1;
     } else {
-      /* ./parser//lexer.nit:1694 */
+      /* ./parser//lexer.nit:1693 */
       goto label1;
     }
   }
index 8b62d8a..fdf446e 100644 (file)
@@ -18,7 +18,7 @@ extern const int SFT_lexer[];
 #define CALL_lexer___TKwclass___init_tk(recv) ((lexer___TKwclass___init_tk_t)CALL((recv), (SFT_lexer[6] + 0)))
 #define CALL_lexer___TKwabstract___init_tk(recv) ((lexer___TKwabstract___init_tk_t)CALL((recv), (SFT_lexer[7] + 0)))
 #define CALL_lexer___TKwinterface___init_tk(recv) ((lexer___TKwinterface___init_tk_t)CALL((recv), (SFT_lexer[8] + 0)))
-#define CALL_lexer___TKwuniversal___init_tk(recv) ((lexer___TKwuniversal___init_tk_t)CALL((recv), (SFT_lexer[9] + 0)))
+#define CALL_lexer___TKwenum___init_tk(recv) ((lexer___TKwenum___init_tk_t)CALL((recv), (SFT_lexer[9] + 0)))
 #define CALL_lexer___TKwspecial___init_tk(recv) ((lexer___TKwspecial___init_tk_t)CALL((recv), (SFT_lexer[10] + 0)))
 #define CALL_lexer___TKwend___init_tk(recv) ((lexer___TKwend___init_tk_t)CALL((recv), (SFT_lexer[11] + 0)))
 #define CALL_lexer___TKwmeth___init_tk(recv) ((lexer___TKwmeth___init_tk_t)CALL((recv), (SFT_lexer[12] + 0)))
@@ -192,14 +192,14 @@ void lexer___TKwinterface___init_tk(val_t p0, val_t p1, int* init_table);
 typedef void (*lexer___TKwinterface___init_tk_t)(val_t p0, val_t p1, int* init_table);
 val_t NEW_TKwinterface_lexer___TKwinterface___init_tk(val_t p0);
 val_t NEW_TKwinterface_parser_nodes___ANode___init(val_t p0);
-static const char * const LOCATE_lexer___TKwuniversal___parser_index = "lexer::TKwuniversal::(lexer::Token::parser_index)";
-val_t lexer___TKwuniversal___parser_index(val_t p0);
-typedef val_t (*lexer___TKwuniversal___parser_index_t)(val_t p0);
-static const char * const LOCATE_lexer___TKwuniversal___init_tk = "lexer::TKwuniversal::init_tk";
-void lexer___TKwuniversal___init_tk(val_t p0, val_t p1, int* init_table);
-typedef void (*lexer___TKwuniversal___init_tk_t)(val_t p0, val_t p1, int* init_table);
-val_t NEW_TKwuniversal_lexer___TKwuniversal___init_tk(val_t p0);
-val_t NEW_TKwuniversal_parser_nodes___ANode___init(val_t p0);
+static const char * const LOCATE_lexer___TKwenum___parser_index = "lexer::TKwenum::(lexer::Token::parser_index)";
+val_t lexer___TKwenum___parser_index(val_t p0);
+typedef val_t (*lexer___TKwenum___parser_index_t)(val_t p0);
+static const char * const LOCATE_lexer___TKwenum___init_tk = "lexer::TKwenum::init_tk";
+void lexer___TKwenum___init_tk(val_t p0, val_t p1, val_t p2, int* init_table);
+typedef void (*lexer___TKwenum___init_tk_t)(val_t p0, val_t p1, val_t p2, int* init_table);
+val_t NEW_TKwenum_lexer___TKwenum___init_tk(val_t p0, val_t p1);
+val_t NEW_TKwenum_parser_nodes___ANode___init(val_t p0);
 static const char * const LOCATE_lexer___TKwspecial___parser_index = "lexer::TKwspecial::(lexer::Token::parser_index)";
 val_t lexer___TKwspecial___parser_index(val_t p0);
 typedef val_t (*lexer___TKwspecial___parser_index_t)(val_t p0);
index d1fd620..35fafef 100644 (file)
@@ -275,7 +275,7 @@ void mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
       }
       if (UNTAG_Bool(REGB1)) {
         fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-        REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[7])(fra.me.REG[7]);
+        REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[7])(fra.me.REG[7]);
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       } else {
         REGB2 = TAG_Bool(false);
@@ -716,7 +716,7 @@ void mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p0, val_t
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
       /* ./syntax//mmbuilder.nit:186 */
       fra.me.REG[7] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-      REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[7])(fra.me.REG[7]);
+      REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[7])(fra.me.REG[7]);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(true);
       } else {
@@ -2579,8 +2579,8 @@ void mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1){
     REGB0 = TAG_Int(5);
     fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
     if (!once_value_1) {
-      fra.me.REG[4] = BOX_NativeString("Error: Package name missmatch between ");
-      REGB0 = TAG_Int(38);
+      fra.me.REG[4] = BOX_NativeString("Error: Module name missmatch between ");
+      REGB0 = TAG_Int(37);
       fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
       once_value_1 = fra.me.REG[4];
       register_static_object(&once_value_1);
@@ -3085,14 +3085,14 @@ val_t mmbuilder___AClasskind___is_interface(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t mmbuilder___AClasskind___is_universal(val_t p0){
+val_t mmbuilder___AClasskind___is_enum(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_mmbuilder;
   fra.me.line = 572;
-  fra.me.meth = LOCATE_mmbuilder___AClasskind___is_universal;
+  fra.me.meth = LOCATE_mmbuilder___AClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
@@ -3142,14 +3142,14 @@ val_t mmbuilder___AInterfaceClasskind___is_interface(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t mmbuilder___AUniversalClasskind___is_universal(val_t p0){
+val_t mmbuilder___AEnumClasskind___is_enum(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_mmbuilder;
   fra.me.line = 580;
-  fra.me.meth = LOCATE_mmbuilder___AUniversalClasskind___is_universal;
+  fra.me.meth = LOCATE_mmbuilder___AEnumClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
@@ -3303,8 +3303,8 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
     CALL_abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
     /* ./syntax//mmbuilder.nit:604 */
     fra.me.REG[4] = CALL_parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = CALL_mmbuilder___AClasskind___is_universal(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_abstractmetamodel___MMGlobalClass___is_universal__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    REGB0 = CALL_mmbuilder___AClasskind___is_enum(fra.me.REG[4])(fra.me.REG[4]);
+    CALL_abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
     /* ./syntax//mmbuilder.nit:605 */
     fra.me.REG[4] = CALL_parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -3393,7 +3393,7 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
         REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
           /* ./syntax//mmbuilder.nit:612 */
-          REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[6])(fra.me.REG[6]);
+          REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
             /* ./syntax//mmbuilder.nit:613 */
             REGB1 = TAG_Int(5);
@@ -3411,8 +3411,8 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
             fra.me.REG[8] = CALL_string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
             CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
             if (!once_value_4) {
-              fra.me.REG[8] = BOX_NativeString(" try to specialise universal class ");
-              REGB1 = TAG_Int(35);
+              fra.me.REG[8] = BOX_NativeString(" try to specialise enum class ");
+              REGB1 = TAG_Int(30);
               fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
               once_value_4 = fra.me.REG[8];
               register_static_object(&once_value_4);
@@ -3480,13 +3480,13 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         } else {
           /* ./syntax//mmbuilder.nit:617 */
-          REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[1])(fra.me.REG[1]);
+          REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
           if (UNTAG_Bool(REGB1)) {
             /* ./syntax//mmbuilder.nit:618 */
             REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
-              REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[6])(fra.me.REG[6]);
+              REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
               REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             } else {
               REGB2 = TAG_Bool(false);
@@ -3497,8 +3497,8 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB1);
               if (!once_value_9) {
-               fra.me.REG[8] = BOX_NativeString("Special error: Universal class ");
-               REGB1 = TAG_Int(31);
+               fra.me.REG[8] = BOX_NativeString("Special error: Enum class ");
+               REGB1 = TAG_Int(26);
                fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB1);
                once_value_9 = fra.me.REG[8];
                register_static_object(&once_value_9);
@@ -3534,7 +3534,7 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
             }
           } else {
             /* ./syntax//mmbuilder.nit:622 */
-            REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[6])(fra.me.REG[6]);
+            REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
             if (UNTAG_Bool(REGB1)) {
               /* ./syntax//mmbuilder.nit:623 */
               REGB1 = TAG_Int(5);
@@ -3552,8 +3552,8 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
               fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
               CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               if (!once_value_13) {
-               fra.me.REG[7] = BOX_NativeString(" try to specialise universal class ");
-               REGB1 = TAG_Int(35);
+               fra.me.REG[7] = BOX_NativeString(" try to specialise enum class ");
+               REGB1 = TAG_Int(30);
                fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB1);
                once_value_13 = fra.me.REG[7];
                register_static_object(&once_value_13);
@@ -3735,7 +3735,7 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
     REGB2 = TAG_Bool(true);
   } else {
     /* ./syntax//mmbuilder.nit:646 */
-    REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[1])(fra.me.REG[1]);
+    REGB1 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     /* ./syntax//mmbuilder.nit:644 */
     REGB2 = REGB1;
@@ -3743,7 +3743,7 @@ void mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB2)) {
     /* ./syntax//mmbuilder.nit:646 */
     fra.me.REG[1] = CALL_parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = CALL_mmbuilder___AClasskind___is_universal(fra.me.REG[1])(fra.me.REG[1]);
+    REGB2 = CALL_mmbuilder___AClasskind___is_enum(fra.me.REG[1])(fra.me.REG[1]);
   } else {
     /* ./syntax//mmbuilder.nit:644 */
     REGB1 = TAG_Bool(false);
@@ -4484,7 +4484,7 @@ void mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_t p2, val
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
     } else {
       /* ./syntax//mmbuilder.nit:775 */
-      REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
         /* ./syntax//mmbuilder.nit:776 */
         REGB0 = TAG_Int(5);
@@ -4501,8 +4501,8 @@ void mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_t p2, val
         fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
         CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         if (!once_value_8) {
-          fra.me.REG[6] = BOX_NativeString(" in the universal class ");
-          REGB0 = TAG_Int(24);
+          fra.me.REG[6] = BOX_NativeString(" in the enum class ");
+          REGB0 = TAG_Int(19);
           fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
           once_value_8 = fra.me.REG[6];
           register_static_object(&once_value_8);
@@ -4571,7 +4571,7 @@ void mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_t p2, val
         CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
       } else {
         /* ./syntax//mmbuilder.nit:781 */
-        REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[4])(fra.me.REG[4]);
+        REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
           /* ./syntax//mmbuilder.nit:782 */
           REGB0 = TAG_Int(5);
@@ -4588,8 +4588,8 @@ void mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_t p2, val
           fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
           CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
           if (!once_value_14) {
-            fra.me.REG[5] = BOX_NativeString(" in the universal ");
-            REGB0 = TAG_Int(18);
+            fra.me.REG[5] = BOX_NativeString(" in the enum ");
+            REGB0 = TAG_Int(13);
             fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
             once_value_14 = fra.me.REG[5];
             register_static_object(&once_value_14);
index efd163f..ccef897 100644 (file)
@@ -114,7 +114,7 @@ extern const int SFT_mmbuilder[];
 #define CALL_SUPER_mmbuilder___AClassdef___accept_class_builder(recv) ((mmbuilder___AClassdef___accept_class_builder_t)CALL((recv), (SFT_mmbuilder[41] + 3)))
 #define CALL_SUPER_mmbuilder___AClassdef___accept_abs_syntax_visitor(recv) ((mmbuilder___AClassdef___accept_abs_syntax_visitor_t)CALL((recv), (SFT_mmbuilder[41] + 4)))
 #define CALL_mmbuilder___AClasskind___is_interface(recv) ((mmbuilder___AClasskind___is_interface_t)CALL((recv), (SFT_mmbuilder[42] + 0)))
-#define CALL_mmbuilder___AClasskind___is_universal(recv) ((mmbuilder___AClasskind___is_universal_t)CALL((recv), (SFT_mmbuilder[42] + 1)))
+#define CALL_mmbuilder___AClasskind___is_enum(recv) ((mmbuilder___AClasskind___is_enum_t)CALL((recv), (SFT_mmbuilder[42] + 1)))
 #define CALL_mmbuilder___AClasskind___is_abstract(recv) ((mmbuilder___AClasskind___is_abstract_t)CALL((recv), (SFT_mmbuilder[42] + 2)))
 #define CALL_SUPER_mmbuilder___AStdClassdef___accept_class_verifier(recv) ((mmbuilder___AStdClassdef___accept_class_verifier_t)CALL((recv), (SFT_mmbuilder[43] + 0)))
 #define ATTR_mmbuilder___AFormaldef____formal(recv) ATTR(recv, (SFT_mmbuilder[44] + 0))
@@ -445,9 +445,9 @@ val_t NEW_AClassdef_parser_nodes___ANode___init(val_t p0);
 static const char * const LOCATE_mmbuilder___AClasskind___is_interface = "mmbuilder::AClasskind::is_interface";
 val_t mmbuilder___AClasskind___is_interface(val_t p0);
 typedef val_t (*mmbuilder___AClasskind___is_interface_t)(val_t p0);
-static const char * const LOCATE_mmbuilder___AClasskind___is_universal = "mmbuilder::AClasskind::is_universal";
-val_t mmbuilder___AClasskind___is_universal(val_t p0);
-typedef val_t (*mmbuilder___AClasskind___is_universal_t)(val_t p0);
+static const char * const LOCATE_mmbuilder___AClasskind___is_enum = "mmbuilder::AClasskind::is_enum";
+val_t mmbuilder___AClasskind___is_enum(val_t p0);
+typedef val_t (*mmbuilder___AClasskind___is_enum_t)(val_t p0);
 static const char * const LOCATE_mmbuilder___AClasskind___is_abstract = "mmbuilder::AClasskind::is_abstract";
 val_t mmbuilder___AClasskind___is_abstract(val_t p0);
 typedef val_t (*mmbuilder___AClasskind___is_abstract_t)(val_t p0);
@@ -458,12 +458,12 @@ typedef val_t (*mmbuilder___AInterfaceClasskind___is_interface_t)(val_t p0);
 val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init();
 val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0);
 val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0);
-static const char * const LOCATE_mmbuilder___AUniversalClasskind___is_universal = "mmbuilder::AUniversalClasskind::(mmbuilder::AClasskind::is_universal)";
-val_t mmbuilder___AUniversalClasskind___is_universal(val_t p0);
-typedef val_t (*mmbuilder___AUniversalClasskind___is_universal_t)(val_t p0);
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init();
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0);
-val_t NEW_AUniversalClasskind_parser_nodes___ANode___init(val_t p0);
+static const char * const LOCATE_mmbuilder___AEnumClasskind___is_enum = "mmbuilder::AEnumClasskind::(mmbuilder::AClasskind::is_enum)";
+val_t mmbuilder___AEnumClasskind___is_enum(val_t p0);
+typedef val_t (*mmbuilder___AEnumClasskind___is_enum_t)(val_t p0);
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init();
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0);
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0);
 static const char * const LOCATE_mmbuilder___AAbstractClasskind___is_abstract = "mmbuilder::AAbstractClasskind::(mmbuilder::AClasskind::is_abstract)";
 val_t mmbuilder___AAbstractClasskind___is_abstract(val_t p0);
 typedef val_t (*mmbuilder___AAbstractClasskind___is_abstract_t)(val_t p0);
index 60d15a1..5517b5f 100644 (file)
@@ -15,8 +15,8 @@ val_t nit_version___Object___nit_version(val_t p0){
   fra.me.REG[0] = p0;
   /* ./nit_version.nit:3 */
   if (!once_value_1) {
-    fra.me.REG[0] = BOX_NativeString("v0.3-168-g25f900f_nc3_dirty");
-    REGB0 = TAG_Int(27);
+    fra.me.REG[0] = BOX_NativeString("v0.3-198-ga3e8db2_nc3");
+    REGB0 = TAG_Int(21);
     fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
index d978ba5..59d91fa 100755 (executable)
@@ -33,7 +33,7 @@ CLIBDIR="clib"
   ./stream_nit.c\
   ./stream._sep.c\
   ./string_search._sep.c\
-  .//exec_nit.c\
+  ./exec_nit.c\
   ./exec._sep.c\
   ./math._sep.c\
   ./tables_nit.c\
index 8d0936f..536d1d8 100644 (file)
@@ -776,19 +776,19 @@ typedef val_t (*NEW_TKwinterface_lexer___TKwinterface___init_tk_t)(val_t p0);
 static const char * const LOCATE_NEW_TKwinterface_parser_nodes___ANode___init = "new TKwinterface parser_nodes::ANode::init";
 val_t NEW_TKwinterface_parser_nodes___ANode___init(val_t p0);
 typedef val_t (*NEW_TKwinterface_parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__TKwuniversal = "init var of TKwuniversal";
-void INIT_ATTRIBUTES__TKwuniversal(val_t p0);
-typedef void (*INIT_ATTRIBUTES__TKwuniversal_t)(val_t p0);
-val_t NEW_TKwuniversal(void);
-static const char * const LOCATE_CHECKNEW_TKwuniversal = "check new TKwuniversal";
-void CHECKNEW_TKwuniversal(val_t p0);
-typedef void (*CHECKNEW_TKwuniversal_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwuniversal_lexer___TKwuniversal___init_tk = "new TKwuniversal lexer::TKwuniversal::init_tk";
-val_t NEW_TKwuniversal_lexer___TKwuniversal___init_tk(val_t p0);
-typedef val_t (*NEW_TKwuniversal_lexer___TKwuniversal___init_tk_t)(val_t p0);
-static const char * const LOCATE_NEW_TKwuniversal_parser_nodes___ANode___init = "new TKwuniversal parser_nodes::ANode::init";
-val_t NEW_TKwuniversal_parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_TKwuniversal_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwenum = "init var of TKwenum";
+void INIT_ATTRIBUTES__TKwenum(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwenum_t)(val_t p0);
+val_t NEW_TKwenum(void);
+static const char * const LOCATE_CHECKNEW_TKwenum = "check new TKwenum";
+void CHECKNEW_TKwenum(val_t p0);
+typedef void (*CHECKNEW_TKwenum_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwenum_lexer___TKwenum___init_tk = "new TKwenum lexer::TKwenum::init_tk";
+val_t NEW_TKwenum_lexer___TKwenum___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TKwenum_lexer___TKwenum___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TKwenum_parser_nodes___ANode___init = "new TKwenum parser_nodes::ANode::init";
+val_t NEW_TKwenum_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwenum_parser_nodes___ANode___init_t)(val_t p0);
 static const char * const LOCATE_INIT_ATTRIBUTES__TKwspecial = "init var of TKwspecial";
 void INIT_ATTRIBUTES__TKwspecial(val_t p0);
 typedef void (*INIT_ATTRIBUTES__TKwspecial_t)(val_t p0);
@@ -2132,22 +2132,22 @@ typedef val_t (*NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init
 static const char * const LOCATE_NEW_AInterfaceClasskind_parser_nodes___ANode___init = "new AInterfaceClasskind parser_nodes::ANode::init";
 val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0);
 typedef val_t (*NEW_AInterfaceClasskind_parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__AUniversalClasskind = "init var of AUniversalClasskind";
-void INIT_ATTRIBUTES__AUniversalClasskind(val_t p0);
-typedef void (*INIT_ATTRIBUTES__AUniversalClasskind_t)(val_t p0);
-val_t NEW_AUniversalClasskind(void);
-static const char * const LOCATE_CHECKNEW_AUniversalClasskind = "check new AUniversalClasskind";
-void CHECKNEW_AUniversalClasskind(val_t p0);
-typedef void (*CHECKNEW_AUniversalClasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init = "new AUniversalClasskind parser_prod::AUniversalClasskind::empty_init";
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init(void);
-typedef val_t (*NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init_t)(void);
-static const char * const LOCATE_NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind = "new AUniversalClasskind parser_prod::AUniversalClasskind::init_auniversalclasskind";
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0);
-typedef val_t (*NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind_t)(val_t p0);
-static const char * const LOCATE_NEW_AUniversalClasskind_parser_nodes___ANode___init = "new AUniversalClasskind parser_nodes::ANode::init";
-val_t NEW_AUniversalClasskind_parser_nodes___ANode___init(val_t p0);
-typedef val_t (*NEW_AUniversalClasskind_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEnumClasskind = "init var of AEnumClasskind";
+void INIT_ATTRIBUTES__AEnumClasskind(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEnumClasskind_t)(val_t p0);
+val_t NEW_AEnumClasskind(void);
+static const char * const LOCATE_CHECKNEW_AEnumClasskind = "check new AEnumClasskind";
+void CHECKNEW_AEnumClasskind(val_t p0);
+typedef void (*CHECKNEW_AEnumClasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init = "new AEnumClasskind parser_prod::AEnumClasskind::empty_init";
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init(void);
+typedef val_t (*NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind = "new AEnumClasskind parser_prod::AEnumClasskind::init_aenumclasskind";
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0);
+typedef val_t (*NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AEnumClasskind_parser_nodes___ANode___init = "new AEnumClasskind parser_nodes::ANode::init";
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEnumClasskind_parser_nodes___ANode___init_t)(val_t p0);
 static const char * const LOCATE_INIT_ATTRIBUTES__AFormaldef = "init var of AFormaldef";
 void INIT_ATTRIBUTES__AFormaldef(val_t p0);
 typedef void (*INIT_ATTRIBUTES__AFormaldef_t)(val_t p0);
@@ -12052,10 +12052,10 @@ const int SFT_parser_nodes[853] = {
   2503 /* Id of TComment */,
   5 /* Color of TComment */,
   69 /* Group of ? */,
-  2343 /* Id of TKwmodule */,
+  2339 /* Id of TKwmodule */,
   5 /* Color of TKwmodule */,
   69 /* Group of ? */,
-  2391 /* Id of TKwimport */,
+  2387 /* Id of TKwimport */,
   5 /* Color of TKwimport */,
   69 /* Group of ? */,
   2427 /* Id of TKwclass */,
@@ -12064,37 +12064,37 @@ const int SFT_parser_nodes[853] = {
   2447 /* Id of TKwabstract */,
   5 /* Color of TKwabstract */,
   69 /* Group of ? */,
-  2379 /* Id of TKwinterface */,
+  2375 /* Id of TKwinterface */,
   5 /* Color of TKwinterface */,
   69 /* Group of ? */,
-  2271 /* Id of TKwuniversal */,
-  5 /* Color of TKwuniversal */,
+  2407 /* Id of TKwenum */,
+  5 /* Color of TKwenum */,
   69 /* Group of ? */,
-  2291 /* Id of TKwspecial */,
+  2287 /* Id of TKwspecial */,
   5 /* Color of TKwspecial */,
   69 /* Group of ? */,
   2411 /* Id of TKwend */,
   5 /* Color of TKwend */,
   69 /* Group of ? */,
-  2347 /* Id of TKwmeth */,
+  2343 /* Id of TKwmeth */,
   5 /* Color of TKwmeth */,
   69 /* Group of ? */,
-  2275 /* Id of TKwtype */,
+  2271 /* Id of TKwtype */,
   5 /* Color of TKwtype */,
   69 /* Group of ? */,
-  2383 /* Id of TKwinit */,
+  2379 /* Id of TKwinit */,
   5 /* Color of TKwinit */,
   69 /* Group of ? */,
-  2303 /* Id of TKwredef */,
+  2299 /* Id of TKwredef */,
   5 /* Color of TKwredef */,
   69 /* Group of ? */,
-  2367 /* Id of TKwis */,
+  2363 /* Id of TKwis */,
   5 /* Color of TKwis */,
   69 /* Group of ? */,
   2419 /* Id of TKwdo */,
   5 /* Color of TKwdo */,
   69 /* Group of ? */,
-  2307 /* Id of TKwreadable */,
+  2303 /* Id of TKwreadable */,
   5 /* Color of TKwreadable */,
   69 /* Group of ? */,
   2259 /* Id of TKwwritable */,
@@ -12103,25 +12103,25 @@ const int SFT_parser_nodes[853] = {
   2267 /* Id of TKwvar */,
   5 /* Color of TKwvar */,
   69 /* Group of ? */,
-  2375 /* Id of TKwintern */,
+  2371 /* Id of TKwintern */,
   5 /* Color of TKwintern */,
   69 /* Group of ? */,
-  2407 /* Id of TKwextern */,
+  2403 /* Id of TKwextern */,
   5 /* Color of TKwextern */,
   69 /* Group of ? */,
-  2311 /* Id of TKwprotected */,
+  2307 /* Id of TKwprotected */,
   5 /* Color of TKwprotected */,
   69 /* Group of ? */,
-  2315 /* Id of TKwprivate */,
+  2311 /* Id of TKwprivate */,
   5 /* Color of TKwprivate */,
   69 /* Group of ? */,
-  2371 /* Id of TKwintrude */,
+  2367 /* Id of TKwintrude */,
   5 /* Color of TKwintrude */,
   69 /* Group of ? */,
-  2395 /* Id of TKwif */,
+  2391 /* Id of TKwif */,
   5 /* Color of TKwif */,
   69 /* Group of ? */,
-  2283 /* Id of TKwthen */,
+  2279 /* Id of TKwthen */,
   5 /* Color of TKwthen */,
   69 /* Group of ? */,
   2415 /* Id of TKwelse */,
@@ -12130,25 +12130,25 @@ const int SFT_parser_nodes[853] = {
   2263 /* Id of TKwwhile */,
   5 /* Color of TKwwhile */,
   69 /* Group of ? */,
-  2351 /* Id of TKwloop */,
+  2347 /* Id of TKwloop */,
   5 /* Color of TKwloop */,
   69 /* Group of ? */,
-  2399 /* Id of TKwfor */,
+  2395 /* Id of TKwfor */,
   5 /* Color of TKwfor */,
   69 /* Group of ? */,
-  2387 /* Id of TKwin */,
+  2383 /* Id of TKwin */,
   5 /* Color of TKwin */,
   69 /* Group of ? */,
   2443 /* Id of TKwand */,
   5 /* Color of TKwand */,
   69 /* Group of ? */,
-  2319 /* Id of TKwor */,
+  2315 /* Id of TKwor */,
   5 /* Color of TKwor */,
   69 /* Group of ? */,
-  2335 /* Id of TKwnot */,
+  2331 /* Id of TKwnot */,
   5 /* Color of TKwnot */,
   69 /* Group of ? */,
-  2299 /* Id of TKwreturn */,
+  2295 /* Id of TKwreturn */,
   5 /* Color of TKwreturn */,
   69 /* Group of ? */,
   2423 /* Id of TKwcontinue */,
@@ -12163,40 +12163,40 @@ const int SFT_parser_nodes[853] = {
   2435 /* Id of TKwassert */,
   5 /* Color of TKwassert */,
   69 /* Group of ? */,
-  2339 /* Id of TKwnew */,
+  2335 /* Id of TKwnew */,
   5 /* Color of TKwnew */,
   69 /* Group of ? */,
-  2363 /* Id of TKwisa */,
+  2359 /* Id of TKwisa */,
   5 /* Color of TKwisa */,
   69 /* Group of ? */,
-  2323 /* Id of TKwonce */,
+  2319 /* Id of TKwonce */,
   5 /* Color of TKwonce */,
   69 /* Group of ? */,
-  2287 /* Id of TKwsuper */,
+  2283 /* Id of TKwsuper */,
   5 /* Color of TKwsuper */,
   69 /* Group of ? */,
-  2295 /* Id of TKwself */,
+  2291 /* Id of TKwself */,
   5 /* Color of TKwself */,
   69 /* Group of ? */,
-  2279 /* Id of TKwtrue */,
+  2275 /* Id of TKwtrue */,
   5 /* Color of TKwtrue */,
   69 /* Group of ? */,
-  2403 /* Id of TKwfalse */,
+  2399 /* Id of TKwfalse */,
   5 /* Color of TKwfalse */,
   69 /* Group of ? */,
-  2331 /* Id of TKwnull */,
+  2327 /* Id of TKwnull */,
   5 /* Color of TKwnull */,
   69 /* Group of ? */,
   2439 /* Id of TKwas */,
   5 /* Color of TKwas */,
   69 /* Group of ? */,
-  2327 /* Id of TKwnullable */,
+  2323 /* Id of TKwnullable */,
   5 /* Color of TKwnullable */,
   69 /* Group of ? */,
-  2359 /* Id of TKwisset */,
+  2355 /* Id of TKwisset */,
   5 /* Color of TKwisset */,
   69 /* Group of ? */,
-  2355 /* Id of TKwlabel */,
+  2351 /* Id of TKwlabel */,
   5 /* Color of TKwlabel */,
   69 /* Group of ? */,
   2219 /* Id of TOpar */,
@@ -12316,7 +12316,7 @@ const int SFT_parser_nodes[853] = {
   2751 /* Id of EOF */,
   5 /* Color of EOF */,
   69 /* Group of ? */,
-  3175 /* Id of AError */,
+  3171 /* Id of AError */,
   6 /* Color of AError */,
   73 /* Group of ? */,
   2823 /* Id of AModule */,
@@ -12330,44 +12330,44 @@ const int SFT_parser_nodes[853] = {
   2839 /* Id of AImport */,
   5 /* Color of AImport */,
   69 /* Group of ? */,
-  3019 /* Id of AStdImport */,
+  3015 /* Id of AStdImport */,
   6 /* Color of AStdImport */,
   6 /* Group of ? */,
   72 /* Group of ? */,
-  3095 /* Id of ANoImport */,
+  3091 /* Id of ANoImport */,
   6 /* Color of ANoImport */,
   6 /* Group of ? */,
   72 /* Group of ? */,
   2791 /* Id of AVisibility */,
   5 /* Color of AVisibility */,
   68 /* Group of ? */,
-  3063 /* Id of APublicVisibility */,
+  3059 /* Id of APublicVisibility */,
   6 /* Color of APublicVisibility */,
   71 /* Group of ? */,
-  3075 /* Id of APrivateVisibility */,
+  3071 /* Id of APrivateVisibility */,
   6 /* Color of APrivateVisibility */,
   6 /* Group of ? */,
   71 /* Group of ? */,
-  3071 /* Id of AProtectedVisibility */,
+  3067 /* Id of AProtectedVisibility */,
   6 /* Color of AProtectedVisibility */,
   6 /* Group of ? */,
   71 /* Group of ? */,
-  3131 /* Id of AIntrudeVisibility */,
+  3127 /* Id of AIntrudeVisibility */,
   6 /* Color of AIntrudeVisibility */,
   6 /* Group of ? */,
   71 /* Group of ? */,
   2867 /* Id of AClassdef */,
   5 /* Color of AClassdef */,
   75 /* Group of ? */,
-  3023 /* Id of AStdClassdef */,
+  3019 /* Id of AStdClassdef */,
   6 /* Color of AStdClassdef */,
   8 /* Group of ? */,
   80 /* Group of ? */,
-  3007 /* Id of ATopClassdef */,
+  3003 /* Id of ATopClassdef */,
   6 /* Color of ATopClassdef */,
   8 /* Group of ? */,
   79 /* Group of ? */,
-  3115 /* Id of AMainClassdef */,
+  3111 /* Id of AMainClassdef */,
   6 /* Color of AMainClassdef */,
   8 /* Group of ? */,
   79 /* Group of ? */,
@@ -12382,12 +12382,12 @@ const int SFT_parser_nodes[853] = {
   6 /* Color of AAbstractClasskind */,
   6 /* Group of ? */,
   73 /* Group of ? */,
-  3135 /* Id of AInterfaceClasskind */,
+  3131 /* Id of AInterfaceClasskind */,
   6 /* Color of AInterfaceClasskind */,
   6 /* Group of ? */,
   73 /* Group of ? */,
-  2995 /* Id of AUniversalClasskind */,
-  6 /* Color of AUniversalClasskind */,
+  3179 /* Id of AEnumClasskind */,
+  6 /* Color of AEnumClasskind */,
   6 /* Group of ? */,
   73 /* Group of ? */,
   2843 /* Id of AFormaldef */,
@@ -12406,7 +12406,7 @@ const int SFT_parser_nodes[853] = {
   6 /* Color of AAttrPropdef */,
   11 /* Group of ? */,
   82 /* Group of ? */,
-  3111 /* Id of AMethPropdef */,
+  3107 /* Id of AMethPropdef */,
   6 /* Color of AMethPropdef */,
   10 /* Group of ? */,
   81 /* Group of ? */,
@@ -12433,7 +12433,7 @@ const int SFT_parser_nodes[853] = {
   3467 /* Id of AMainMethPropdef */,
   8 /* Color of AMainMethPropdef */,
   97 /* Group of ? */,
-  2999 /* Id of ATypePropdef */,
+  2995 /* Id of ATypePropdef */,
   6 /* Color of ATypePropdef */,
   9 /* Group of ? */,
   80 /* Group of ? */,
@@ -12441,7 +12441,7 @@ const int SFT_parser_nodes[853] = {
   5 /* Color of AAble */,
   6 /* Group of ? */,
   67 /* Group of ? */,
-  3055 /* Id of AReadAble */,
+  3051 /* Id of AReadAble */,
   6 /* Color of AReadAble */,
   8 /* Group of ? */,
   72 /* Group of ? */,
@@ -12452,59 +12452,59 @@ const int SFT_parser_nodes[853] = {
   2827 /* Id of AMethid */,
   5 /* Color of AMethid */,
   69 /* Group of ? */,
-  3151 /* Id of AIdMethid */,
+  3147 /* Id of AIdMethid */,
   6 /* Color of AIdMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3079 /* Id of APlusMethid */,
+  3075 /* Id of APlusMethid */,
   6 /* Color of APlusMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3103 /* Id of AMinusMethid */,
+  3099 /* Id of AMinusMethid */,
   6 /* Color of AMinusMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3031 /* Id of AStarMethid */,
+  3027 /* Id of AStarMethid */,
   6 /* Color of AStarMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3035 /* Id of ASlashMethid */,
+  3031 /* Id of ASlashMethid */,
   6 /* Color of ASlashMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3087 /* Id of APercentMethid */,
+  3083 /* Id of APercentMethid */,
   6 /* Color of APercentMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3179 /* Id of AEqMethid */,
+  3175 /* Id of AEqMethid */,
   6 /* Color of AEqMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3099 /* Id of ANeMethid */,
+  3095 /* Id of ANeMethid */,
   6 /* Color of ANeMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3127 /* Id of ALeMethid */,
+  3123 /* Id of ALeMethid */,
   6 /* Color of ALeMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3163 /* Id of AGeMethid */,
+  3159 /* Id of AGeMethid */,
   6 /* Color of AGeMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3119 /* Id of ALtMethid */,
+  3115 /* Id of ALtMethid */,
   6 /* Color of ALtMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3155 /* Id of AGtMethid */,
+  3151 /* Id of AGtMethid */,
   6 /* Color of AGtMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3123 /* Id of ALlMethid */,
+  3119 /* Id of ALlMethid */,
   6 /* Color of ALlMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3159 /* Id of AGgMethid */,
+  3155 /* Id of AGgMethid */,
   6 /* Color of AGgMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
@@ -12512,7 +12512,7 @@ const int SFT_parser_nodes[853] = {
   6 /* Color of ABraMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
-  3027 /* Id of AStarshipMethid */,
+  3023 /* Id of AStarshipMethid */,
   6 /* Color of AStarshipMethid */,
   7 /* Group of ? */,
   72 /* Group of ? */,
@@ -12555,7 +12555,7 @@ const int SFT_parser_nodes[853] = {
   7 /* Color of AVardeclExpr */,
   12 /* Group of ? */,
   82 /* Group of ? */,
-  3047 /* Id of AReturnExpr */,
+  3043 /* Id of AReturnExpr */,
   7 /* Color of AReturnExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
@@ -12579,11 +12579,11 @@ const int SFT_parser_nodes[853] = {
   8 /* Color of ADoExpr */,
   12 /* Group of ? */,
   85 /* Group of ? */,
-  3147 /* Id of AIfExpr */,
+  3143 /* Id of AIfExpr */,
   7 /* Color of AIfExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
-  3143 /* Id of AIfexprExpr */,
+  3139 /* Id of AIfexprExpr */,
   7 /* Color of AIfexprExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
@@ -12607,7 +12607,7 @@ const int SFT_parser_nodes[853] = {
   7 /* Color of AAssignFormExpr */,
   13 /* Group of ? */,
   82 /* Group of ? */,
-  3051 /* Id of AReassignFormExpr */,
+  3047 /* Id of AReassignFormExpr */,
   7 /* Color of AReassignFormExpr */,
   14 /* Group of ? */,
   84 /* Group of ? */,
@@ -12764,7 +12764,7 @@ const int SFT_parser_nodes[853] = {
   3303 /* Id of AVarReassignExpr */,
   8 /* Color of AVarReassignExpr */,
   89 /* Group of ? */,
-  3059 /* Id of ARangeExpr */,
+  3055 /* Id of ARangeExpr */,
   7 /* Color of ARangeExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
@@ -12778,7 +12778,7 @@ const int SFT_parser_nodes[853] = {
   7 /* Color of AArrayExpr */,
   11 /* Group of ? */,
   82 /* Group of ? */,
-  3043 /* Id of ASelfExpr */,
+  3039 /* Id of ASelfExpr */,
   7 /* Color of ASelfExpr */,
   12 /* Group of ? */,
   82 /* Group of ? */,
@@ -12793,15 +12793,15 @@ const int SFT_parser_nodes[853] = {
   8 /* Color of AFalseExpr */,
   11 /* Group of ? */,
   82 /* Group of ? */,
-  3091 /* Id of ANullExpr */,
+  3087 /* Id of ANullExpr */,
   7 /* Color of ANullExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
-  3139 /* Id of AIntExpr */,
+  3135 /* Id of AIntExpr */,
   7 /* Color of AIntExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
-  3167 /* Id of AFloatExpr */,
+  3163 /* Id of AFloatExpr */,
   7 /* Color of AFloatExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
@@ -12809,7 +12809,7 @@ const int SFT_parser_nodes[853] = {
   7 /* Color of ACharExpr */,
   11 /* Group of ? */,
   81 /* Group of ? */,
-  3015 /* Id of AStringFormExpr */,
+  3011 /* Id of AStringFormExpr */,
   7 /* Color of AStringFormExpr */,
   81 /* Group of ? */,
   3319 /* Id of AStringExpr */,
@@ -12828,14 +12828,14 @@ const int SFT_parser_nodes[853] = {
   8 /* Color of AEndStringExpr */,
   13 /* Group of ? */,
   84 /* Group of ? */,
-  3011 /* Id of ASuperstringExpr */,
+  3007 /* Id of ASuperstringExpr */,
   7 /* Color of ASuperstringExpr */,
   12 /* Group of ? */,
   82 /* Group of ? */,
   3327 /* Id of AParExpr */,
   8 /* Color of AParExpr */,
   83 /* Group of ? */,
-  3067 /* Id of AProxyExpr */,
+  3063 /* Id of AProxyExpr */,
   7 /* Color of AProxyExpr */,
   11 /* Group of ? */,
   79 /* Group of ? */,
@@ -12854,11 +12854,11 @@ const int SFT_parser_nodes[853] = {
   2871 /* Id of AAssignOp */,
   5 /* Color of AAssignOp */,
   68 /* Group of ? */,
-  3083 /* Id of APlusAssignOp */,
+  3079 /* Id of APlusAssignOp */,
   6 /* Color of APlusAssignOp */,
   6 /* Group of ? */,
   71 /* Group of ? */,
-  3107 /* Id of AMinusAssignOp */,
+  3103 /* Id of AMinusAssignOp */,
   6 /* Color of AMinusAssignOp */,
   6 /* Group of ? */,
   71 /* Group of ? */,
@@ -12869,7 +12869,7 @@ const int SFT_parser_nodes[853] = {
   2855 /* Id of AClosureId */,
   5 /* Color of AClosureId */,
   68 /* Group of ? */,
-  3039 /* Id of ASimpleClosureId */,
+  3035 /* Id of ASimpleClosureId */,
   6 /* Color of ASimpleClosureId */,
   6 /* Group of ? */,
   71 /* Group of ? */,
@@ -13717,7 +13717,7 @@ const int SFT_typing[51] = {
   67 /* Group of ? */,
   8 /* Group of ? */,
   70 /* Group of ? */,
-  3003 /* Id of ATypeCheckExpr */,
+  2999 /* Id of ATypeCheckExpr */,
   5 /* Color of ATypeCheckExpr */,
   67 /* Group of ? */,
   81 /* Group of ? */,
@@ -13743,7 +13743,7 @@ const int SFT_scope[23] = {
   5 /* Color of EscapableClosure */,
   10 /* Group of ? */,
   65 /* Group of ? */,
-  3171 /* Id of AEscapeExpr */,
+  3167 /* Id of AEscapeExpr */,
   7 /* Color of AEscapeExpr */,
   11 /* Group of ? */,
   79 /* Group of ? */,
@@ -24677,12 +24677,12 @@ val_t NEW_TComment_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwmodule[70] = {
-  {(bigint) 2343 /* 0: Identity */},
+  {(bigint) 2339 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwmodule < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwmodule < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwmodule < Token: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: TKwmodule < TKwmodule: superclass typecheck marker */},
+  {(bigint) 2339 /* 5: TKwmodule < TKwmodule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24837,12 +24837,12 @@ val_t NEW_TKwmodule_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwimport[70] = {
-  {(bigint) 2391 /* 0: Identity */},
+  {(bigint) 2387 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwimport < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwimport < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwimport < Token: superclass typecheck marker */},
-  {(bigint) 2391 /* 5: TKwimport < TKwimport: superclass typecheck marker */},
+  {(bigint) 2387 /* 5: TKwimport < TKwimport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25311,12 +25311,12 @@ val_t NEW_TKwabstract_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwinterface[70] = {
-  {(bigint) 2379 /* 0: Identity */},
+  {(bigint) 2375 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwinterface < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwinterface < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwinterface < Token: superclass typecheck marker */},
-  {(bigint) 2379 /* 5: TKwinterface < TKwinterface: superclass typecheck marker */},
+  {(bigint) 2375 /* 5: TKwinterface < TKwinterface: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25468,13 +25468,13 @@ val_t NEW_TKwinterface_parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_TKwuniversal[70] = {
-  {(bigint) 2271 /* 0: Identity */},
+const classtable_elt_t VFT_TKwenum[70] = {
+  {(bigint) 2407 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) 3 /* 2: TKwuniversal < Object: superclass typecheck marker */},
-  {(bigint) 275 /* 3: TKwuniversal < ANode: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TKwuniversal < Token: superclass typecheck marker */},
-  {(bigint) 2271 /* 5: TKwuniversal < TKwuniversal: superclass typecheck marker */},
+  {(bigint) 3 /* 2: TKwenum < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwenum < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwenum < Token: superclass typecheck marker */},
+  {(bigint) 2407 /* 5: TKwenum < TKwenum: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25488,7 +25488,7 @@ const classtable_elt_t VFT_TKwuniversal[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) time___Object___get_time},
-  {(bigint) 2 /* 19: TKwuniversal < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: TKwenum < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -25527,7 +25527,7 @@ const classtable_elt_t VFT_TKwuniversal[70] = {
   {(bigint) parser_prod___Token___replace_child},
   {(bigint) parser_prod___ANode___replace_with},
   {(bigint) parser_prod___Token___visit_all},
-  {(bigint) 1 /* 58: TKwuniversal < ANode: superclass init_table position */},
+  {(bigint) 1 /* 58: TKwenum < ANode: superclass init_table position */},
   {(bigint) parser_nodes___ANode___location},
   {(bigint) parser_nodes___ANode___init},
   {(bigint) icode_generation___ANode___accept_icode_generation},
@@ -25535,45 +25535,45 @@ const classtable_elt_t VFT_TKwuniversal[70] = {
   {(bigint) typing___ANode___after_typing},
   {(bigint) syntax_base___Token___to_symbol},
   {(bigint) lexer___Token___text},
-  {(bigint) lexer___TKwuniversal___parser_index},
-  {(bigint) 0 /* 67: TKwuniversal < Token: superclass init_table position */},
-  {(bigint) lexer___TKwuniversal___init_tk},
-  {(bigint) 3 /* 69: TKwuniversal < TKwuniversal: superclass init_table position */},
+  {(bigint) lexer___TKwenum___parser_index},
+  {(bigint) 0 /* 67: TKwenum < Token: superclass init_table position */},
+  {(bigint) lexer___TKwenum___init_tk},
+  {(bigint) 3 /* 69: TKwenum < TKwenum: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute TKwuniversal::_parent */
-/* 3: Attribute TKwuniversal::_location */
-/* 4: Attribute TKwuniversal::_symbol_cache */
-/* 5: Attribute TKwuniversal::_text */
-void INIT_ATTRIBUTES__TKwuniversal(val_t p0){
+/* 2: Attribute TKwenum::_parent */
+/* 3: Attribute TKwenum::_location */
+/* 4: Attribute TKwenum::_symbol_cache */
+/* 5: Attribute TKwenum::_text */
+void INIT_ATTRIBUTES__TKwenum(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_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwuniversal;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwenum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwuniversal(void)
+val_t NEW_TKwenum(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_TKwuniversal;
+  obj->vft = (classtable_elt_t*)VFT_TKwenum;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_TKwuniversal(val_t p0){
+void CHECKNEW_TKwenum(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_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_TKwuniversal;
+  fra.me.meth = LOCATE_CHECKNEW_TKwenum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
@@ -25585,54 +25585,56 @@ void CHECKNEW_TKwuniversal(val_t p0){
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_TKwuniversal_lexer___TKwuniversal___init_tk(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t NEW_TKwenum_lexer___TKwenum___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 115;
-  fra.me.meth = LOCATE_NEW_TKwuniversal_lexer___TKwuniversal___init_tk;
+  fra.me.meth = LOCATE_NEW_TKwenum_lexer___TKwenum___init_tk;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
   /* ./parser//lexer.nit:115 */
-  fra.me.REG[1] = NEW_TKwuniversal();
-  INIT_ATTRIBUTES__TKwuniversal(fra.me.REG[1]);
-  lexer___TKwuniversal___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_TKwuniversal(fra.me.REG[1]);
+  fra.me.REG[2] = NEW_TKwenum();
+  INIT_ATTRIBUTES__TKwenum(fra.me.REG[2]);
+  lexer___TKwenum___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TKwenum(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
-val_t NEW_TKwuniversal_parser_nodes___ANode___init(val_t p0){
+val_t NEW_TKwenum_parser_nodes___ANode___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_NEW_TKwuniversal_parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_NEW_TKwenum_parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_TKwuniversal();
-  INIT_ATTRIBUTES__TKwuniversal(fra.me.REG[1]);
+  fra.me.REG[1] = NEW_TKwenum();
+  INIT_ATTRIBUTES__TKwenum(fra.me.REG[1]);
   parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_TKwuniversal(fra.me.REG[1]);
+  CHECKNEW_TKwenum(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwspecial[70] = {
-  {(bigint) 2291 /* 0: Identity */},
+  {(bigint) 2287 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwspecial < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwspecial < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwspecial < Token: superclass typecheck marker */},
-  {(bigint) 2291 /* 5: TKwspecial < TKwspecial: superclass typecheck marker */},
+  {(bigint) 2287 /* 5: TKwspecial < TKwspecial: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25943,12 +25945,12 @@ val_t NEW_TKwend_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwmeth[70] = {
-  {(bigint) 2347 /* 0: Identity */},
+  {(bigint) 2343 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwmeth < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwmeth < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwmeth < Token: superclass typecheck marker */},
-  {(bigint) 2347 /* 5: TKwmeth < TKwmeth: superclass typecheck marker */},
+  {(bigint) 2343 /* 5: TKwmeth < TKwmeth: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26101,12 +26103,12 @@ val_t NEW_TKwmeth_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwtype[70] = {
-  {(bigint) 2275 /* 0: Identity */},
+  {(bigint) 2271 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwtype < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwtype < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwtype < Token: superclass typecheck marker */},
-  {(bigint) 2275 /* 5: TKwtype < TKwtype: superclass typecheck marker */},
+  {(bigint) 2271 /* 5: TKwtype < TKwtype: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26259,12 +26261,12 @@ val_t NEW_TKwtype_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwinit[70] = {
-  {(bigint) 2383 /* 0: Identity */},
+  {(bigint) 2379 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwinit < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwinit < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwinit < Token: superclass typecheck marker */},
-  {(bigint) 2383 /* 5: TKwinit < TKwinit: superclass typecheck marker */},
+  {(bigint) 2379 /* 5: TKwinit < TKwinit: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26417,12 +26419,12 @@ val_t NEW_TKwinit_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwredef[70] = {
-  {(bigint) 2303 /* 0: Identity */},
+  {(bigint) 2299 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwredef < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwredef < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwredef < Token: superclass typecheck marker */},
-  {(bigint) 2303 /* 5: TKwredef < TKwredef: superclass typecheck marker */},
+  {(bigint) 2299 /* 5: TKwredef < TKwredef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26575,12 +26577,12 @@ val_t NEW_TKwredef_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwis[70] = {
-  {(bigint) 2367 /* 0: Identity */},
+  {(bigint) 2363 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwis < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwis < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwis < Token: superclass typecheck marker */},
-  {(bigint) 2367 /* 5: TKwis < TKwis: superclass typecheck marker */},
+  {(bigint) 2363 /* 5: TKwis < TKwis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26891,12 +26893,12 @@ val_t NEW_TKwdo_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwreadable[70] = {
-  {(bigint) 2307 /* 0: Identity */},
+  {(bigint) 2303 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwreadable < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwreadable < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwreadable < Token: superclass typecheck marker */},
-  {(bigint) 2307 /* 5: TKwreadable < TKwreadable: superclass typecheck marker */},
+  {(bigint) 2303 /* 5: TKwreadable < TKwreadable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27365,12 +27367,12 @@ val_t NEW_TKwvar_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwintern[70] = {
-  {(bigint) 2375 /* 0: Identity */},
+  {(bigint) 2371 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwintern < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwintern < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwintern < Token: superclass typecheck marker */},
-  {(bigint) 2375 /* 5: TKwintern < TKwintern: superclass typecheck marker */},
+  {(bigint) 2371 /* 5: TKwintern < TKwintern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27523,12 +27525,12 @@ val_t NEW_TKwintern_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwextern[70] = {
-  {(bigint) 2407 /* 0: Identity */},
+  {(bigint) 2403 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwextern < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwextern < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwextern < Token: superclass typecheck marker */},
-  {(bigint) 2407 /* 5: TKwextern < TKwextern: superclass typecheck marker */},
+  {(bigint) 2403 /* 5: TKwextern < TKwextern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27681,12 +27683,12 @@ val_t NEW_TKwextern_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwprotected[70] = {
-  {(bigint) 2311 /* 0: Identity */},
+  {(bigint) 2307 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwprotected < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwprotected < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwprotected < Token: superclass typecheck marker */},
-  {(bigint) 2311 /* 5: TKwprotected < TKwprotected: superclass typecheck marker */},
+  {(bigint) 2307 /* 5: TKwprotected < TKwprotected: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27839,12 +27841,12 @@ val_t NEW_TKwprotected_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwprivate[70] = {
-  {(bigint) 2315 /* 0: Identity */},
+  {(bigint) 2311 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwprivate < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwprivate < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwprivate < Token: superclass typecheck marker */},
-  {(bigint) 2315 /* 5: TKwprivate < TKwprivate: superclass typecheck marker */},
+  {(bigint) 2311 /* 5: TKwprivate < TKwprivate: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27997,12 +27999,12 @@ val_t NEW_TKwprivate_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwintrude[70] = {
-  {(bigint) 2371 /* 0: Identity */},
+  {(bigint) 2367 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwintrude < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwintrude < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwintrude < Token: superclass typecheck marker */},
-  {(bigint) 2371 /* 5: TKwintrude < TKwintrude: superclass typecheck marker */},
+  {(bigint) 2367 /* 5: TKwintrude < TKwintrude: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28155,12 +28157,12 @@ val_t NEW_TKwintrude_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwif[70] = {
-  {(bigint) 2395 /* 0: Identity */},
+  {(bigint) 2391 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwif < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwif < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwif < Token: superclass typecheck marker */},
-  {(bigint) 2395 /* 5: TKwif < TKwif: superclass typecheck marker */},
+  {(bigint) 2391 /* 5: TKwif < TKwif: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28313,12 +28315,12 @@ val_t NEW_TKwif_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwthen[70] = {
-  {(bigint) 2283 /* 0: Identity */},
+  {(bigint) 2279 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwthen < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwthen < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwthen < Token: superclass typecheck marker */},
-  {(bigint) 2283 /* 5: TKwthen < TKwthen: superclass typecheck marker */},
+  {(bigint) 2279 /* 5: TKwthen < TKwthen: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28787,12 +28789,12 @@ val_t NEW_TKwwhile_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwloop[70] = {
-  {(bigint) 2351 /* 0: Identity */},
+  {(bigint) 2347 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwloop < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwloop < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwloop < Token: superclass typecheck marker */},
-  {(bigint) 2351 /* 5: TKwloop < TKwloop: superclass typecheck marker */},
+  {(bigint) 2347 /* 5: TKwloop < TKwloop: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28945,12 +28947,12 @@ val_t NEW_TKwloop_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwfor[70] = {
-  {(bigint) 2399 /* 0: Identity */},
+  {(bigint) 2395 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwfor < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwfor < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwfor < Token: superclass typecheck marker */},
-  {(bigint) 2399 /* 5: TKwfor < TKwfor: superclass typecheck marker */},
+  {(bigint) 2395 /* 5: TKwfor < TKwfor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29103,12 +29105,12 @@ val_t NEW_TKwfor_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwin[70] = {
-  {(bigint) 2387 /* 0: Identity */},
+  {(bigint) 2383 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwin < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwin < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwin < Token: superclass typecheck marker */},
-  {(bigint) 2387 /* 5: TKwin < TKwin: superclass typecheck marker */},
+  {(bigint) 2383 /* 5: TKwin < TKwin: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29419,12 +29421,12 @@ val_t NEW_TKwand_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwor[70] = {
-  {(bigint) 2319 /* 0: Identity */},
+  {(bigint) 2315 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwor < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwor < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwor < Token: superclass typecheck marker */},
-  {(bigint) 2319 /* 5: TKwor < TKwor: superclass typecheck marker */},
+  {(bigint) 2315 /* 5: TKwor < TKwor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29577,12 +29579,12 @@ val_t NEW_TKwor_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwnot[70] = {
-  {(bigint) 2335 /* 0: Identity */},
+  {(bigint) 2331 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwnot < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwnot < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwnot < Token: superclass typecheck marker */},
-  {(bigint) 2335 /* 5: TKwnot < TKwnot: superclass typecheck marker */},
+  {(bigint) 2331 /* 5: TKwnot < TKwnot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29735,12 +29737,12 @@ val_t NEW_TKwnot_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwreturn[70] = {
-  {(bigint) 2299 /* 0: Identity */},
+  {(bigint) 2295 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwreturn < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwreturn < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwreturn < Token: superclass typecheck marker */},
-  {(bigint) 2299 /* 5: TKwreturn < TKwreturn: superclass typecheck marker */},
+  {(bigint) 2295 /* 5: TKwreturn < TKwreturn: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30525,12 +30527,12 @@ val_t NEW_TKwassert_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwnew[70] = {
-  {(bigint) 2339 /* 0: Identity */},
+  {(bigint) 2335 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwnew < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwnew < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwnew < Token: superclass typecheck marker */},
-  {(bigint) 2339 /* 5: TKwnew < TKwnew: superclass typecheck marker */},
+  {(bigint) 2335 /* 5: TKwnew < TKwnew: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30683,12 +30685,12 @@ val_t NEW_TKwnew_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwisa[70] = {
-  {(bigint) 2363 /* 0: Identity */},
+  {(bigint) 2359 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwisa < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwisa < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwisa < Token: superclass typecheck marker */},
-  {(bigint) 2363 /* 5: TKwisa < TKwisa: superclass typecheck marker */},
+  {(bigint) 2359 /* 5: TKwisa < TKwisa: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30841,12 +30843,12 @@ val_t NEW_TKwisa_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwonce[70] = {
-  {(bigint) 2323 /* 0: Identity */},
+  {(bigint) 2319 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwonce < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwonce < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwonce < Token: superclass typecheck marker */},
-  {(bigint) 2323 /* 5: TKwonce < TKwonce: superclass typecheck marker */},
+  {(bigint) 2319 /* 5: TKwonce < TKwonce: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30999,12 +31001,12 @@ val_t NEW_TKwonce_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwsuper[70] = {
-  {(bigint) 2287 /* 0: Identity */},
+  {(bigint) 2283 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwsuper < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwsuper < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwsuper < Token: superclass typecheck marker */},
-  {(bigint) 2287 /* 5: TKwsuper < TKwsuper: superclass typecheck marker */},
+  {(bigint) 2283 /* 5: TKwsuper < TKwsuper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31157,12 +31159,12 @@ val_t NEW_TKwsuper_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwself[70] = {
-  {(bigint) 2295 /* 0: Identity */},
+  {(bigint) 2291 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwself < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwself < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwself < Token: superclass typecheck marker */},
-  {(bigint) 2295 /* 5: TKwself < TKwself: superclass typecheck marker */},
+  {(bigint) 2291 /* 5: TKwself < TKwself: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31315,12 +31317,12 @@ val_t NEW_TKwself_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwtrue[70] = {
-  {(bigint) 2279 /* 0: Identity */},
+  {(bigint) 2275 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwtrue < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwtrue < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwtrue < Token: superclass typecheck marker */},
-  {(bigint) 2279 /* 5: TKwtrue < TKwtrue: superclass typecheck marker */},
+  {(bigint) 2275 /* 5: TKwtrue < TKwtrue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31473,12 +31475,12 @@ val_t NEW_TKwtrue_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwfalse[70] = {
-  {(bigint) 2403 /* 0: Identity */},
+  {(bigint) 2399 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwfalse < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwfalse < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwfalse < Token: superclass typecheck marker */},
-  {(bigint) 2403 /* 5: TKwfalse < TKwfalse: superclass typecheck marker */},
+  {(bigint) 2399 /* 5: TKwfalse < TKwfalse: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31631,12 +31633,12 @@ val_t NEW_TKwfalse_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwnull[70] = {
-  {(bigint) 2331 /* 0: Identity */},
+  {(bigint) 2327 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwnull < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwnull < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwnull < Token: superclass typecheck marker */},
-  {(bigint) 2331 /* 5: TKwnull < TKwnull: superclass typecheck marker */},
+  {(bigint) 2327 /* 5: TKwnull < TKwnull: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31947,12 +31949,12 @@ val_t NEW_TKwas_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwnullable[70] = {
-  {(bigint) 2327 /* 0: Identity */},
+  {(bigint) 2323 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwnullable < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwnullable < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwnullable < Token: superclass typecheck marker */},
-  {(bigint) 2327 /* 5: TKwnullable < TKwnullable: superclass typecheck marker */},
+  {(bigint) 2323 /* 5: TKwnullable < TKwnullable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32105,12 +32107,12 @@ val_t NEW_TKwnullable_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwisset[70] = {
-  {(bigint) 2359 /* 0: Identity */},
+  {(bigint) 2355 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwisset < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwisset < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwisset < Token: superclass typecheck marker */},
-  {(bigint) 2359 /* 5: TKwisset < TKwisset: superclass typecheck marker */},
+  {(bigint) 2355 /* 5: TKwisset < TKwisset: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32263,12 +32265,12 @@ val_t NEW_TKwisset_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_TKwlabel[70] = {
-  {(bigint) 2355 /* 0: Identity */},
+  {(bigint) 2351 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: TKwlabel < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: TKwlabel < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: TKwlabel < Token: superclass typecheck marker */},
-  {(bigint) 2355 /* 5: TKwlabel < TKwlabel: superclass typecheck marker */},
+  {(bigint) 2351 /* 5: TKwlabel < TKwlabel: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38603,13 +38605,13 @@ val_t NEW_EOF_parser_nodes___EOF___noinit(void){
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_AError[75] = {
-  {(bigint) 3175 /* 0: Identity */},
+  {(bigint) 3171 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AError < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AError < ANode: superclass typecheck marker */},
   {(bigint) 295 /* 4: AError < Token: superclass typecheck marker */},
   {(bigint) 2751 /* 5: AError < EOF: superclass typecheck marker */},
-  {(bigint) 3175 /* 6: AError < AError: superclass typecheck marker */},
+  {(bigint) 3171 /* 6: AError < AError: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39305,13 +39307,13 @@ val_t NEW_AImport_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AStdImport[76] = {
-  {(bigint) 3019 /* 0: Identity */},
+  {(bigint) 3015 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AStdImport < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AStdImport < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AStdImport < Prod: superclass typecheck marker */},
   {(bigint) 2839 /* 5: AStdImport < AImport: superclass typecheck marker */},
-  {(bigint) 3019 /* 6: AStdImport < AStdImport: superclass typecheck marker */},
+  {(bigint) 3015 /* 6: AStdImport < AStdImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39505,13 +39507,13 @@ val_t NEW_AStdImport_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ANoImport[76] = {
-  {(bigint) 3095 /* 0: Identity */},
+  {(bigint) 3091 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ANoImport < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ANoImport < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ANoImport < Prod: superclass typecheck marker */},
   {(bigint) 2839 /* 5: ANoImport < AImport: superclass typecheck marker */},
-  {(bigint) 3095 /* 6: ANoImport < ANoImport: superclass typecheck marker */},
+  {(bigint) 3091 /* 6: ANoImport < ANoImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39833,13 +39835,13 @@ val_t NEW_AVisibility_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_APublicVisibility[72] = {
-  {(bigint) 3063 /* 0: Identity */},
+  {(bigint) 3059 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: APublicVisibility < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: APublicVisibility < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: APublicVisibility < Prod: superclass typecheck marker */},
   {(bigint) 2791 /* 5: APublicVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3063 /* 6: APublicVisibility < APublicVisibility: superclass typecheck marker */},
+  {(bigint) 3059 /* 6: APublicVisibility < APublicVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40002,13 +40004,13 @@ val_t NEW_APublicVisibility_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_APrivateVisibility[73] = {
-  {(bigint) 3075 /* 0: Identity */},
+  {(bigint) 3071 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: APrivateVisibility < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: APrivateVisibility < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: APrivateVisibility < Prod: superclass typecheck marker */},
   {(bigint) 2791 /* 5: APrivateVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3075 /* 6: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
+  {(bigint) 3071 /* 6: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40183,13 +40185,13 @@ val_t NEW_APrivateVisibility_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AProtectedVisibility[73] = {
-  {(bigint) 3071 /* 0: Identity */},
+  {(bigint) 3067 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AProtectedVisibility < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AProtectedVisibility < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AProtectedVisibility < Prod: superclass typecheck marker */},
   {(bigint) 2791 /* 5: AProtectedVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3071 /* 6: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
+  {(bigint) 3067 /* 6: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40364,13 +40366,13 @@ val_t NEW_AProtectedVisibility_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AIntrudeVisibility[73] = {
-  {(bigint) 3131 /* 0: Identity */},
+  {(bigint) 3127 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AIntrudeVisibility < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AIntrudeVisibility < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AIntrudeVisibility < Prod: superclass typecheck marker */},
   {(bigint) 2791 /* 5: AIntrudeVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3131 /* 6: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
+  {(bigint) 3127 /* 6: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40689,13 +40691,13 @@ val_t NEW_AClassdef_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AStdClassdef[89] = {
-  {(bigint) 3023 /* 0: Identity */},
+  {(bigint) 3019 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AStdClassdef < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AStdClassdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AStdClassdef < Prod: superclass typecheck marker */},
   {(bigint) 2867 /* 5: AStdClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3023 /* 6: AStdClassdef < AStdClassdef: superclass typecheck marker */},
+  {(bigint) 3019 /* 6: AStdClassdef < AStdClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40953,13 +40955,13 @@ val_t NEW_AStdClassdef_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ATopClassdef[81] = {
-  {(bigint) 3007 /* 0: Identity */},
+  {(bigint) 3003 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ATopClassdef < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ATopClassdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ATopClassdef < Prod: superclass typecheck marker */},
   {(bigint) 2867 /* 5: ATopClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3007 /* 6: ATopClassdef < ATopClassdef: superclass typecheck marker */},
+  {(bigint) 3003 /* 6: ATopClassdef < ATopClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41153,13 +41155,13 @@ val_t NEW_ATopClassdef_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AMainClassdef[81] = {
-  {(bigint) 3115 /* 0: Identity */},
+  {(bigint) 3111 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AMainClassdef < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AMainClassdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AMainClassdef < Prod: superclass typecheck marker */},
   {(bigint) 2867 /* 5: AMainClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3115 /* 6: AMainClassdef < AMainClassdef: superclass typecheck marker */},
+  {(bigint) 3111 /* 6: AMainClassdef < AMainClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41421,7 +41423,7 @@ const classtable_elt_t VFT_AClasskind[71] = {
   {(bigint) 0 /* 65: AClasskind < Prod: superclass init_table position */},
   {(bigint) parser_nodes___Prod___location__eq},
   {(bigint) mmbuilder___AClasskind___is_interface},
-  {(bigint) mmbuilder___AClasskind___is_universal},
+  {(bigint) mmbuilder___AClasskind___is_enum},
   {(bigint) mmbuilder___AClasskind___is_abstract},
   {(bigint) 3 /* 70: AClasskind < AClasskind: superclass init_table position */},
 };
@@ -41551,7 +41553,7 @@ const classtable_elt_t VFT_AConcreteClasskind[75] = {
   {(bigint) 0 /* 65: AConcreteClasskind < Prod: superclass init_table position */},
   {(bigint) parser_nodes___Prod___location__eq},
   {(bigint) mmbuilder___AClasskind___is_interface},
-  {(bigint) mmbuilder___AClasskind___is_universal},
+  {(bigint) mmbuilder___AClasskind___is_enum},
   {(bigint) mmbuilder___AClasskind___is_abstract},
   {(bigint) 3 /* 70: AConcreteClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser_prod___AConcreteClasskind___empty_init},
@@ -41734,7 +41736,7 @@ const classtable_elt_t VFT_AAbstractClasskind[76] = {
   {(bigint) 0 /* 65: AAbstractClasskind < Prod: superclass init_table position */},
   {(bigint) parser_nodes___Prod___location__eq},
   {(bigint) mmbuilder___AClasskind___is_interface},
-  {(bigint) mmbuilder___AClasskind___is_universal},
+  {(bigint) mmbuilder___AClasskind___is_enum},
   {(bigint) mmbuilder___AAbstractClasskind___is_abstract},
   {(bigint) 3 /* 70: AAbstractClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser_prod___AAbstractClasskind___empty_init},
@@ -41858,13 +41860,13 @@ val_t NEW_AAbstractClasskind_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AInterfaceClasskind[75] = {
-  {(bigint) 3135 /* 0: Identity */},
+  {(bigint) 3131 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AInterfaceClasskind < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AInterfaceClasskind < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AInterfaceClasskind < Prod: superclass typecheck marker */},
   {(bigint) 2863 /* 5: AInterfaceClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3135 /* 6: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
+  {(bigint) 3131 /* 6: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41926,7 +41928,7 @@ const classtable_elt_t VFT_AInterfaceClasskind[75] = {
   {(bigint) 0 /* 65: AInterfaceClasskind < Prod: superclass init_table position */},
   {(bigint) parser_nodes___Prod___location__eq},
   {(bigint) mmbuilder___AInterfaceClasskind___is_interface},
-  {(bigint) mmbuilder___AClasskind___is_universal},
+  {(bigint) mmbuilder___AClasskind___is_enum},
   {(bigint) mmbuilder___AClasskind___is_abstract},
   {(bigint) 3 /* 70: AInterfaceClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser_prod___AInterfaceClasskind___empty_init},
@@ -42040,14 +42042,14 @@ val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_AUniversalClasskind[75] = {
-  {(bigint) 2995 /* 0: Identity */},
+const classtable_elt_t VFT_AEnumClasskind[75] = {
+  {(bigint) 3179 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) 3 /* 2: AUniversalClasskind < Object: superclass typecheck marker */},
-  {(bigint) 275 /* 3: AUniversalClasskind < ANode: superclass typecheck marker */},
-  {(bigint) 1859 /* 4: AUniversalClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 2863 /* 5: AUniversalClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 2995 /* 6: AUniversalClasskind < AUniversalClasskind: superclass typecheck marker */},
+  {(bigint) 3 /* 2: AEnumClasskind < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEnumClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEnumClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: AEnumClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3179 /* 6: AEnumClasskind < AEnumClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42060,7 +42062,7 @@ const classtable_elt_t VFT_AUniversalClasskind[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) time___Object___get_time},
-  {(bigint) 2 /* 19: AUniversalClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 19: AEnumClasskind < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -42096,130 +42098,130 @@ const classtable_elt_t VFT_AUniversalClasskind[75] = {
   {(bigint) parser_prod___ANode___parent},
   {(bigint) parser_prod___ANode___parent__eq},
   {(bigint) parser_prod___ANode___remove_child},
-  {(bigint) parser_prod___AUniversalClasskind___replace_child},
+  {(bigint) parser_prod___AEnumClasskind___replace_child},
   {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AUniversalClasskind___visit_all},
-  {(bigint) 1 /* 58: AUniversalClasskind < ANode: superclass init_table position */},
+  {(bigint) parser_prod___AEnumClasskind___visit_all},
+  {(bigint) 1 /* 58: AEnumClasskind < ANode: superclass init_table position */},
   {(bigint) parser_nodes___ANode___location},
   {(bigint) parser_nodes___ANode___init},
   {(bigint) icode_generation___ANode___accept_icode_generation},
   {(bigint) typing___ANode___accept_typing},
   {(bigint) typing___ANode___after_typing},
   {(bigint) parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 65: AUniversalClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 65: AEnumClasskind < Prod: superclass init_table position */},
   {(bigint) parser_nodes___Prod___location__eq},
   {(bigint) mmbuilder___AClasskind___is_interface},
-  {(bigint) mmbuilder___AUniversalClasskind___is_universal},
+  {(bigint) mmbuilder___AEnumClasskind___is_enum},
   {(bigint) mmbuilder___AClasskind___is_abstract},
-  {(bigint) 3 /* 70: AUniversalClasskind < AClasskind: superclass init_table position */},
-  {(bigint) parser_prod___AUniversalClasskind___empty_init},
-  {(bigint) parser_prod___AUniversalClasskind___init_auniversalclasskind},
-  {(bigint) 4 /* 73: AUniversalClasskind < AUniversalClasskind: superclass init_table position */},
-  {(bigint) parser_nodes___AUniversalClasskind___n_kwuniversal},
+  {(bigint) 3 /* 70: AEnumClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser_prod___AEnumClasskind___empty_init},
+  {(bigint) parser_prod___AEnumClasskind___init_aenumclasskind},
+  {(bigint) 4 /* 73: AEnumClasskind < AEnumClasskind: superclass init_table position */},
+  {(bigint) parser_nodes___AEnumClasskind___n_kwenum},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute AUniversalClasskind::_parent */
-/* 3: Attribute AUniversalClasskind::_location */
-/* 4: Attribute AUniversalClasskind::_first_location */
-/* 5: Attribute AUniversalClasskind::_last_location */
-/* 6: Attribute AUniversalClasskind::_n_kwuniversal */
-void INIT_ATTRIBUTES__AUniversalClasskind(val_t p0){
+/* 2: Attribute AEnumClasskind::_parent */
+/* 3: Attribute AEnumClasskind::_location */
+/* 4: Attribute AEnumClasskind::_first_location */
+/* 5: Attribute AEnumClasskind::_last_location */
+/* 6: Attribute AEnumClasskind::_n_kwenum */
+void INIT_ATTRIBUTES__AEnumClasskind(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_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AUniversalClasskind;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEnumClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AUniversalClasskind(void)
+val_t NEW_AEnumClasskind(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_AUniversalClasskind;
+  obj->vft = (classtable_elt_t*)VFT_AEnumClasskind;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_AUniversalClasskind(val_t p0){
+void CHECKNEW_AEnumClasskind(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_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_CHECKNEW_AUniversalClasskind;
+  fra.me.meth = LOCATE_CHECKNEW_AEnumClasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwuniversal", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init(void){
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 783;
-  fra.me.meth = LOCATE_NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   /* ./parser//parser_prod.nit:783 */
-  fra.me.REG[0] = NEW_AUniversalClasskind();
-  INIT_ATTRIBUTES__AUniversalClasskind(fra.me.REG[0]);
-  parser_prod___AUniversalClasskind___empty_init(fra.me.REG[0], init_table);
-  CHECKNEW_AUniversalClasskind(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_AEnumClasskind();
+  INIT_ATTRIBUTES__AEnumClasskind(fra.me.REG[0]);
+  parser_prod___AEnumClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEnumClasskind(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0){
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 785;
-  fra.me.meth = LOCATE_NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./parser//parser_prod.nit:785 */
-  fra.me.REG[1] = NEW_AUniversalClasskind();
-  INIT_ATTRIBUTES__AUniversalClasskind(fra.me.REG[1]);
-  parser_prod___AUniversalClasskind___init_auniversalclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_AUniversalClasskind(fra.me.REG[1]);
+  fra.me.REG[1] = NEW_AEnumClasskind();
+  INIT_ATTRIBUTES__AEnumClasskind(fra.me.REG[1]);
+  parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEnumClasskind(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t NEW_AUniversalClasskind_parser_nodes___ANode___init(val_t p0){
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_NEW_AUniversalClasskind_parser_nodes___ANode___init;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser_nodes___ANode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_AUniversalClasskind();
-  INIT_ATTRIBUTES__AUniversalClasskind(fra.me.REG[1]);
+  fra.me.REG[1] = NEW_AEnumClasskind();
+  INIT_ATTRIBUTES__AEnumClasskind(fra.me.REG[1]);
   parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_AUniversalClasskind(fra.me.REG[1]);
+  CHECKNEW_AEnumClasskind(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
@@ -43017,13 +43019,13 @@ val_t NEW_AAttrPropdef_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AMethPropdef[89] = {
-  {(bigint) 3111 /* 0: Identity */},
+  {(bigint) 3107 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AMethPropdef < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AMethPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: AMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: AMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43239,7 +43241,7 @@ const classtable_elt_t VFT_ADeferredMethPropdef[93] = {
   {(bigint) 275 /* 3: ADeferredMethPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ADeferredMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
   {(bigint) 3399 /* 7: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43518,7 +43520,7 @@ const classtable_elt_t VFT_AInternMethPropdef[93] = {
   {(bigint) 275 /* 3: AInternMethPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AInternMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: AInternMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
   {(bigint) 3367 /* 7: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43797,7 +43799,7 @@ const classtable_elt_t VFT_AExternMethPropdef[95] = {
   {(bigint) 275 /* 3: AExternMethPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AExternMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: AExternMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
   {(bigint) 3383 /* 7: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44084,7 +44086,7 @@ const classtable_elt_t VFT_AConcreteMethPropdef[95] = {
   {(bigint) 275 /* 3: AConcreteMethPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AConcreteMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
   {(bigint) 3411 /* 7: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44363,7 +44365,7 @@ const classtable_elt_t VFT_AConcreteInitPropdef[103] = {
   {(bigint) 275 /* 3: AConcreteInitPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AConcreteInitPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
   {(bigint) 3411 /* 7: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {(bigint) 3471 /* 8: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
@@ -44729,7 +44731,7 @@ const classtable_elt_t VFT_AMainMethPropdef[98] = {
   {(bigint) 275 /* 3: AMainMethPropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AMainMethPropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: AMainMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3111 /* 6: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
   {(bigint) 3411 /* 7: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {(bigint) 3467 /* 8: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
@@ -45047,13 +45049,13 @@ val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t
   return fra.me.REG[5];
 }
 const classtable_elt_t VFT_ATypePropdef[86] = {
-  {(bigint) 2999 /* 0: Identity */},
+  {(bigint) 2995 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ATypePropdef < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ATypePropdef < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ATypePropdef < Prod: superclass typecheck marker */},
   {(bigint) 2811 /* 5: ATypePropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 2999 /* 6: ATypePropdef < ATypePropdef: superclass typecheck marker */},
+  {(bigint) 2995 /* 6: ATypePropdef < ATypePropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45422,13 +45424,13 @@ val_t NEW_AAble_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AReadAble[74] = {
-  {(bigint) 3055 /* 0: Identity */},
+  {(bigint) 3051 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AReadAble < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AReadAble < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AReadAble < Prod: superclass typecheck marker */},
   {(bigint) 2875 /* 5: AReadAble < AAble: superclass typecheck marker */},
-  {(bigint) 3055 /* 6: AReadAble < AReadAble: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: AReadAble < AReadAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45944,13 +45946,13 @@ val_t NEW_AMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AIdMethid[74] = {
-  {(bigint) 3151 /* 0: Identity */},
+  {(bigint) 3147 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AIdMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AIdMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AIdMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AIdMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3151 /* 6: AIdMethid < AIdMethid: superclass typecheck marker */},
+  {(bigint) 3147 /* 6: AIdMethid < AIdMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46127,13 +46129,13 @@ val_t NEW_AIdMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_APlusMethid[74] = {
-  {(bigint) 3079 /* 0: Identity */},
+  {(bigint) 3075 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: APlusMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: APlusMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: APlusMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: APlusMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3079 /* 6: APlusMethid < APlusMethid: superclass typecheck marker */},
+  {(bigint) 3075 /* 6: APlusMethid < APlusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46310,13 +46312,13 @@ val_t NEW_APlusMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AMinusMethid[74] = {
-  {(bigint) 3103 /* 0: Identity */},
+  {(bigint) 3099 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AMinusMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AMinusMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AMinusMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AMinusMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3103 /* 6: AMinusMethid < AMinusMethid: superclass typecheck marker */},
+  {(bigint) 3099 /* 6: AMinusMethid < AMinusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46493,13 +46495,13 @@ val_t NEW_AMinusMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AStarMethid[74] = {
-  {(bigint) 3031 /* 0: Identity */},
+  {(bigint) 3027 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AStarMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AStarMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AStarMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AStarMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3031 /* 6: AStarMethid < AStarMethid: superclass typecheck marker */},
+  {(bigint) 3027 /* 6: AStarMethid < AStarMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46676,13 +46678,13 @@ val_t NEW_AStarMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ASlashMethid[74] = {
-  {(bigint) 3035 /* 0: Identity */},
+  {(bigint) 3031 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ASlashMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ASlashMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ASlashMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: ASlashMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3035 /* 6: ASlashMethid < ASlashMethid: superclass typecheck marker */},
+  {(bigint) 3031 /* 6: ASlashMethid < ASlashMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46859,13 +46861,13 @@ val_t NEW_ASlashMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_APercentMethid[74] = {
-  {(bigint) 3087 /* 0: Identity */},
+  {(bigint) 3083 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: APercentMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: APercentMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: APercentMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: APercentMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3087 /* 6: APercentMethid < APercentMethid: superclass typecheck marker */},
+  {(bigint) 3083 /* 6: APercentMethid < APercentMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47042,13 +47044,13 @@ val_t NEW_APercentMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AEqMethid[74] = {
-  {(bigint) 3179 /* 0: Identity */},
+  {(bigint) 3175 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AEqMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AEqMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AEqMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AEqMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3179 /* 6: AEqMethid < AEqMethid: superclass typecheck marker */},
+  {(bigint) 3175 /* 6: AEqMethid < AEqMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47225,13 +47227,13 @@ val_t NEW_AEqMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ANeMethid[74] = {
-  {(bigint) 3099 /* 0: Identity */},
+  {(bigint) 3095 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ANeMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ANeMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ANeMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: ANeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3099 /* 6: ANeMethid < ANeMethid: superclass typecheck marker */},
+  {(bigint) 3095 /* 6: ANeMethid < ANeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47408,13 +47410,13 @@ val_t NEW_ANeMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ALeMethid[74] = {
-  {(bigint) 3127 /* 0: Identity */},
+  {(bigint) 3123 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ALeMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ALeMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ALeMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: ALeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3127 /* 6: ALeMethid < ALeMethid: superclass typecheck marker */},
+  {(bigint) 3123 /* 6: ALeMethid < ALeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47591,13 +47593,13 @@ val_t NEW_ALeMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AGeMethid[74] = {
-  {(bigint) 3163 /* 0: Identity */},
+  {(bigint) 3159 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AGeMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AGeMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AGeMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AGeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3163 /* 6: AGeMethid < AGeMethid: superclass typecheck marker */},
+  {(bigint) 3159 /* 6: AGeMethid < AGeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47774,13 +47776,13 @@ val_t NEW_AGeMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ALtMethid[74] = {
-  {(bigint) 3119 /* 0: Identity */},
+  {(bigint) 3115 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ALtMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ALtMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ALtMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: ALtMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3119 /* 6: ALtMethid < ALtMethid: superclass typecheck marker */},
+  {(bigint) 3115 /* 6: ALtMethid < ALtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47957,13 +47959,13 @@ val_t NEW_ALtMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AGtMethid[74] = {
-  {(bigint) 3155 /* 0: Identity */},
+  {(bigint) 3151 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AGtMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AGtMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AGtMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AGtMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3155 /* 6: AGtMethid < AGtMethid: superclass typecheck marker */},
+  {(bigint) 3151 /* 6: AGtMethid < AGtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48140,13 +48142,13 @@ val_t NEW_AGtMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ALlMethid[75] = {
-  {(bigint) 3123 /* 0: Identity */},
+  {(bigint) 3119 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ALlMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ALlMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ALlMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: ALlMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3123 /* 6: ALlMethid < ALlMethid: superclass typecheck marker */},
+  {(bigint) 3119 /* 6: ALlMethid < ALlMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48324,13 +48326,13 @@ val_t NEW_ALlMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AGgMethid[75] = {
-  {(bigint) 3159 /* 0: Identity */},
+  {(bigint) 3155 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AGgMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AGgMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AGgMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AGgMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3159 /* 6: AGgMethid < AGgMethid: superclass typecheck marker */},
+  {(bigint) 3155 /* 6: AGgMethid < AGgMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48700,13 +48702,13 @@ val_t NEW_ABraMethid_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AStarshipMethid[74] = {
-  {(bigint) 3027 /* 0: Identity */},
+  {(bigint) 3023 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AStarshipMethid < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AStarshipMethid < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AStarshipMethid < Prod: superclass typecheck marker */},
   {(bigint) 2827 /* 5: AStarshipMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3027 /* 6: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
+  {(bigint) 3023 /* 6: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50947,14 +50949,14 @@ val_t NEW_AVardeclExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AReturnExpr[84] = {
-  {(bigint) 3047 /* 0: Identity */},
+  {(bigint) 3043 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AReturnExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AReturnExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AReturnExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AReturnExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3047 /* 7: AReturnExpr < AReturnExpr: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: AReturnExpr < AReturnExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51302,7 +51304,7 @@ const classtable_elt_t VFT_ABreakExpr[88] = {
   {(bigint) 1859 /* 4: ABreakExpr < Prod: superclass typecheck marker */},
   {(bigint) 2831 /* 5: ABreakExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 2847 /* 6: ABreakExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3171 /* 7: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3167 /* 7: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
   {(bigint) 3419 /* 8: ABreakExpr < ABreakExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51734,7 +51736,7 @@ const classtable_elt_t VFT_AContinueExpr[88] = {
   {(bigint) 1859 /* 4: AContinueExpr < Prod: superclass typecheck marker */},
   {(bigint) 2831 /* 5: AContinueExpr < ALabelable: superclass typecheck marker */},
   {(bigint) 2847 /* 6: AContinueExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3171 /* 7: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3167 /* 7: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
   {(bigint) 3407 /* 8: AContinueExpr < AContinueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52175,14 +52177,14 @@ val_t NEW_ADoExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AIfExpr[86] = {
-  {(bigint) 3147 /* 0: Identity */},
+  {(bigint) 3143 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AIfExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AIfExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AIfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AIfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3147 /* 7: AIfExpr < AIfExpr: superclass typecheck marker */},
+  {(bigint) 3143 /* 7: AIfExpr < AIfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52406,14 +52408,14 @@ val_t NEW_AIfExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AIfexprExpr[88] = {
-  {(bigint) 3143 /* 0: Identity */},
+  {(bigint) 3139 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AIfexprExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AIfexprExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AIfexprExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AIfexprExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3143 /* 7: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
+  {(bigint) 3139 /* 7: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53788,14 +53790,14 @@ val_t NEW_AAssignFormExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AReassignFormExpr[87] = {
-  {(bigint) 3051 /* 0: Identity */},
+  {(bigint) 3047 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AReassignFormExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AReassignFormExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AReassignFormExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AReassignFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53975,7 +53977,7 @@ const classtable_elt_t VFT_AOnceExpr[86] = {
   {(bigint) 1859 /* 4: AOnceExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AOnceExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AOnceExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AOnceExpr < AProxyExpr: superclass typecheck marker */},
   {(bigint) 3343 /* 8: AOnceExpr < AOnceExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58786,7 +58788,7 @@ const classtable_elt_t VFT_AIsaExpr[85] = {
   {(bigint) 3 /* 2: AIsaExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AIsaExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AIsaExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3003 /* 5: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: AIsaExpr < AExpr: superclass typecheck marker */},
   {(bigint) 3207 /* 7: AIsaExpr < ABoolExpr: superclass typecheck marker */},
   {(bigint) 3363 /* 8: AIsaExpr < AIsaExpr: superclass typecheck marker */},
@@ -62613,7 +62615,7 @@ const classtable_elt_t VFT_AAttrReassignExpr[93] = {
   {(bigint) 1859 /* 4: AAttrReassignExpr < Prod: superclass typecheck marker */},
   {(bigint) 3219 /* 5: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: AAttrReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
   {(bigint) 3423 /* 8: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63510,7 +63512,7 @@ const classtable_elt_t VFT_ACallReassignExpr[116] = {
   {(bigint) 1859 /* 4: ACallReassignExpr < Prod: superclass typecheck marker */},
   {(bigint) 3251 /* 5: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: ACallReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
   {(bigint) 3443 /* 8: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3459 /* 9: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
   {(bigint) 3479 /* 10: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
@@ -65478,7 +65480,7 @@ const classtable_elt_t VFT_ABraReassignExpr[113] = {
   {(bigint) 1859 /* 4: ABraReassignExpr < Prod: superclass typecheck marker */},
   {(bigint) 3251 /* 5: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: ABraReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
   {(bigint) 3443 /* 8: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3459 /* 9: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
   {(bigint) 3479 /* 10: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
@@ -66493,7 +66495,7 @@ const classtable_elt_t VFT_AVarReassignExpr[90] = {
   {(bigint) 1859 /* 4: AVarReassignExpr < Prod: superclass typecheck marker */},
   {(bigint) 2991 /* 5: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: AVarReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
   {(bigint) 3303 /* 8: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66718,14 +66720,14 @@ val_t NEW_AVarReassignExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ARangeExpr[84] = {
-  {(bigint) 3059 /* 0: Identity */},
+  {(bigint) 3055 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ARangeExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ARangeExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ARangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: ARangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3059 /* 7: ARangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: ARangeExpr < ARangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66941,7 +66943,7 @@ const classtable_elt_t VFT_ACrangeExpr[87] = {
   {(bigint) 1859 /* 4: ACrangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: ACrangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3059 /* 7: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
   {(bigint) 3403 /* 8: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67202,7 +67204,7 @@ const classtable_elt_t VFT_AOrangeExpr[87] = {
   {(bigint) 1859 /* 4: AOrangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AOrangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3059 /* 7: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
   {(bigint) 3331 /* 8: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67668,14 +67670,14 @@ val_t NEW_AArrayExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ASelfExpr[84] = {
-  {(bigint) 3043 /* 0: Identity */},
+  {(bigint) 3039 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ASelfExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ASelfExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ASelfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: ASelfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: ASelfExpr < ASelfExpr: superclass typecheck marker */},
+  {(bigint) 3039 /* 7: ASelfExpr < ASelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67879,7 +67881,7 @@ const classtable_elt_t VFT_AImplicitSelfExpr[87] = {
   {(bigint) 1859 /* 4: AImplicitSelfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3043 /* 7: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
+  {(bigint) 3039 /* 7: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
   {(bigint) 3371 /* 8: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68533,14 +68535,14 @@ val_t NEW_AFalseExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ANullExpr[83] = {
-  {(bigint) 3091 /* 0: Identity */},
+  {(bigint) 3087 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ANullExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ANullExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ANullExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: ANullExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3091 /* 7: ANullExpr < ANullExpr: superclass typecheck marker */},
+  {(bigint) 3087 /* 7: ANullExpr < ANullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68740,14 +68742,14 @@ val_t NEW_ANullExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AIntExpr[83] = {
-  {(bigint) 3139 /* 0: Identity */},
+  {(bigint) 3135 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AIntExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AIntExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AIntExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AIntExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3139 /* 7: AIntExpr < AIntExpr: superclass typecheck marker */},
+  {(bigint) 3135 /* 7: AIntExpr < AIntExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68947,14 +68949,14 @@ val_t NEW_AIntExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AFloatExpr[83] = {
-  {(bigint) 3167 /* 0: Identity */},
+  {(bigint) 3163 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AFloatExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AFloatExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AFloatExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AFloatExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3167 /* 7: AFloatExpr < AFloatExpr: superclass typecheck marker */},
+  {(bigint) 3163 /* 7: AFloatExpr < AFloatExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69361,14 +69363,14 @@ val_t NEW_ACharExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AStringFormExpr[82] = {
-  {(bigint) 3015 /* 0: Identity */},
+  {(bigint) 3011 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AStringFormExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AStringFormExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AStringFormExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AStringFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3015 /* 7: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69530,7 +69532,7 @@ const classtable_elt_t VFT_AStringExpr[86] = {
   {(bigint) 1859 /* 4: AStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3015 /* 7: AStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AStringExpr < AStringFormExpr: superclass typecheck marker */},
   {(bigint) 3319 /* 8: AStringExpr < AStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69742,7 +69744,7 @@ const classtable_elt_t VFT_AStartStringExpr[86] = {
   {(bigint) 1859 /* 4: AStartStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AStartStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3015 /* 7: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
   {(bigint) 3323 /* 8: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69954,7 +69956,7 @@ const classtable_elt_t VFT_AMidStringExpr[86] = {
   {(bigint) 1859 /* 4: AMidStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AMidStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3015 /* 7: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
   {(bigint) 3351 /* 8: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70166,7 +70168,7 @@ const classtable_elt_t VFT_AEndStringExpr[86] = {
   {(bigint) 1859 /* 4: AEndStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AEndStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3015 /* 7: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
   {(bigint) 3387 /* 8: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70371,14 +70373,14 @@ val_t NEW_AEndStringExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ASuperstringExpr[84] = {
-  {(bigint) 3011 /* 0: Identity */},
+  {(bigint) 3007 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ASuperstringExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ASuperstringExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ASuperstringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: ASuperstringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3011 /* 7: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
+  {(bigint) 3007 /* 7: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70591,7 +70593,7 @@ const classtable_elt_t VFT_AParExpr[84] = {
   {(bigint) 1859 /* 4: AParExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AParExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AParExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AParExpr < AProxyExpr: superclass typecheck marker */},
   {(bigint) 3327 /* 8: AParExpr < AParExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70792,14 +70794,14 @@ val_t NEW_AParExpr_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AProxyExpr[81] = {
-  {(bigint) 3067 /* 0: Identity */},
+  {(bigint) 3063 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AProxyExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AProxyExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AProxyExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) 2847 /* 6: AProxyExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AProxyExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AProxyExpr < AProxyExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70962,7 +70964,7 @@ const classtable_elt_t VFT_AAsCastExpr[85] = {
   {(bigint) 3 /* 2: AAsCastExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AAsCastExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AAsCastExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3003 /* 5: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: AAsCastExpr < AExpr: superclass typecheck marker */},
   {(bigint) 3435 /* 7: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
@@ -71788,13 +71790,13 @@ val_t NEW_AAssignOp_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_APlusAssignOp[73] = {
-  {(bigint) 3083 /* 0: Identity */},
+  {(bigint) 3079 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: APlusAssignOp < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: APlusAssignOp < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: APlusAssignOp < Prod: superclass typecheck marker */},
   {(bigint) 2871 /* 5: APlusAssignOp < AAssignOp: superclass typecheck marker */},
-  {(bigint) 3083 /* 6: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
+  {(bigint) 3079 /* 6: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71969,13 +71971,13 @@ val_t NEW_APlusAssignOp_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_AMinusAssignOp[73] = {
-  {(bigint) 3107 /* 0: Identity */},
+  {(bigint) 3103 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AMinusAssignOp < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AMinusAssignOp < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AMinusAssignOp < Prod: superclass typecheck marker */},
   {(bigint) 2871 /* 5: AMinusAssignOp < AAssignOp: superclass typecheck marker */},
-  {(bigint) 3107 /* 6: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
+  {(bigint) 3103 /* 6: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72524,13 +72526,13 @@ val_t NEW_AClosureId_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ASimpleClosureId[73] = {
-  {(bigint) 3039 /* 0: Identity */},
+  {(bigint) 3035 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ASimpleClosureId < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ASimpleClosureId < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ASimpleClosureId < Prod: superclass typecheck marker */},
   {(bigint) 2855 /* 5: ASimpleClosureId < AClosureId: superclass typecheck marker */},
-  {(bigint) 3039 /* 6: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
+  {(bigint) 3035 /* 6: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74067,16 +74069,16 @@ void INIT_ATTRIBUTES__ComputeProdLocationVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser.nit:867 */
+  /* ./parser//parser.nit:865 */
   fra.me.REG[1] = NEW_Array_array___Array___init();
   ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser.nit:870 */
+  /* ./parser//parser.nit:868 */
   fra.me.REG[1] = NEW_Array_array___Array___init();
   ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser.nit:873 */
+  /* ./parser//parser.nit:871 */
   fra.me.REG[1] = NEW_Array_array___Array___init();
   ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./parser//parser.nit:875 */
+  /* ./parser//parser.nit:873 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:66 */
@@ -74128,12 +74130,12 @@ val_t NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init(
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 946;
+  fra.me.line = 944;
   fra.me.meth = LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./parser//parser.nit:946 */
+  /* ./parser//parser.nit:944 */
   fra.me.REG[0] = NEW_ComputeProdLocationVisitor();
   INIT_ATTRIBUTES__ComputeProdLocationVisitor(fra.me.REG[0]);
   parser___ComputeProdLocationVisitor___init(fra.me.REG[0], init_table);
@@ -74243,13 +74245,13 @@ val_t NEW_ReduceAction0_parser___ReduceAction0___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 976;
+  fra.me.line = 974;
   fra.me.meth = LOCATE_NEW_ReduceAction0_parser___ReduceAction0___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:976 */
+  /* ./parser//parser.nit:974 */
   fra.me.REG[0] = NEW_ReduceAction0();
   INIT_ATTRIBUTES__ReduceAction0(fra.me.REG[0]);
   parser___ReduceAction0___init(fra.me.REG[0], REGB0, init_table);
@@ -74359,13 +74361,13 @@ val_t NEW_ReduceAction1_parser___ReduceAction1___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 997;
+  fra.me.line = 995;
   fra.me.meth = LOCATE_NEW_ReduceAction1_parser___ReduceAction1___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:997 */
+  /* ./parser//parser.nit:995 */
   fra.me.REG[0] = NEW_ReduceAction1();
   INIT_ATTRIBUTES__ReduceAction1(fra.me.REG[0]);
   parser___ReduceAction1___init(fra.me.REG[0], REGB0, init_table);
@@ -74475,13 +74477,13 @@ val_t NEW_ReduceAction2_parser___ReduceAction2___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1019;
+  fra.me.line = 1017;
   fra.me.meth = LOCATE_NEW_ReduceAction2_parser___ReduceAction2___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1019 */
+  /* ./parser//parser.nit:1017 */
   fra.me.REG[0] = NEW_ReduceAction2();
   INIT_ATTRIBUTES__ReduceAction2(fra.me.REG[0]);
   parser___ReduceAction2___init(fra.me.REG[0], REGB0, init_table);
@@ -74591,13 +74593,13 @@ val_t NEW_ReduceAction3_parser___ReduceAction3___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1044;
+  fra.me.line = 1042;
   fra.me.meth = LOCATE_NEW_ReduceAction3_parser___ReduceAction3___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1044 */
+  /* ./parser//parser.nit:1042 */
   fra.me.REG[0] = NEW_ReduceAction3();
   INIT_ATTRIBUTES__ReduceAction3(fra.me.REG[0]);
   parser___ReduceAction3___init(fra.me.REG[0], REGB0, init_table);
@@ -74707,13 +74709,13 @@ val_t NEW_ReduceAction4_parser___ReduceAction4___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1066;
+  fra.me.line = 1064;
   fra.me.meth = LOCATE_NEW_ReduceAction4_parser___ReduceAction4___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1066 */
+  /* ./parser//parser.nit:1064 */
   fra.me.REG[0] = NEW_ReduceAction4();
   INIT_ATTRIBUTES__ReduceAction4(fra.me.REG[0]);
   parser___ReduceAction4___init(fra.me.REG[0], REGB0, init_table);
@@ -74823,13 +74825,13 @@ val_t NEW_ReduceAction5_parser___ReduceAction5___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1091;
+  fra.me.line = 1089;
   fra.me.meth = LOCATE_NEW_ReduceAction5_parser___ReduceAction5___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1091 */
+  /* ./parser//parser.nit:1089 */
   fra.me.REG[0] = NEW_ReduceAction5();
   INIT_ATTRIBUTES__ReduceAction5(fra.me.REG[0]);
   parser___ReduceAction5___init(fra.me.REG[0], REGB0, init_table);
@@ -74939,13 +74941,13 @@ val_t NEW_ReduceAction6_parser___ReduceAction6___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1117;
+  fra.me.line = 1115;
   fra.me.meth = LOCATE_NEW_ReduceAction6_parser___ReduceAction6___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1117 */
+  /* ./parser//parser.nit:1115 */
   fra.me.REG[0] = NEW_ReduceAction6();
   INIT_ATTRIBUTES__ReduceAction6(fra.me.REG[0]);
   parser___ReduceAction6___init(fra.me.REG[0], REGB0, init_table);
@@ -75055,13 +75057,13 @@ val_t NEW_ReduceAction7_parser___ReduceAction7___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1146;
+  fra.me.line = 1144;
   fra.me.meth = LOCATE_NEW_ReduceAction7_parser___ReduceAction7___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1146 */
+  /* ./parser//parser.nit:1144 */
   fra.me.REG[0] = NEW_ReduceAction7();
   INIT_ATTRIBUTES__ReduceAction7(fra.me.REG[0]);
   parser___ReduceAction7___init(fra.me.REG[0], REGB0, init_table);
@@ -75171,13 +75173,13 @@ val_t NEW_ReduceAction8_parser___ReduceAction8___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1175;
+  fra.me.line = 1173;
   fra.me.meth = LOCATE_NEW_ReduceAction8_parser___ReduceAction8___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1175 */
+  /* ./parser//parser.nit:1173 */
   fra.me.REG[0] = NEW_ReduceAction8();
   INIT_ATTRIBUTES__ReduceAction8(fra.me.REG[0]);
   parser___ReduceAction8___init(fra.me.REG[0], REGB0, init_table);
@@ -75287,13 +75289,13 @@ val_t NEW_ReduceAction9_parser___ReduceAction9___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1207;
+  fra.me.line = 1205;
   fra.me.meth = LOCATE_NEW_ReduceAction9_parser___ReduceAction9___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1207 */
+  /* ./parser//parser.nit:1205 */
   fra.me.REG[0] = NEW_ReduceAction9();
   INIT_ATTRIBUTES__ReduceAction9(fra.me.REG[0]);
   parser___ReduceAction9___init(fra.me.REG[0], REGB0, init_table);
@@ -75403,13 +75405,13 @@ val_t NEW_ReduceAction10_parser___ReduceAction10___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1240;
+  fra.me.line = 1238;
   fra.me.meth = LOCATE_NEW_ReduceAction10_parser___ReduceAction10___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1240 */
+  /* ./parser//parser.nit:1238 */
   fra.me.REG[0] = NEW_ReduceAction10();
   INIT_ATTRIBUTES__ReduceAction10(fra.me.REG[0]);
   parser___ReduceAction10___init(fra.me.REG[0], REGB0, init_table);
@@ -75519,13 +75521,13 @@ val_t NEW_ReduceAction11_parser___ReduceAction11___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1276;
+  fra.me.line = 1274;
   fra.me.meth = LOCATE_NEW_ReduceAction11_parser___ReduceAction11___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1276 */
+  /* ./parser//parser.nit:1274 */
   fra.me.REG[0] = NEW_ReduceAction11();
   INIT_ATTRIBUTES__ReduceAction11(fra.me.REG[0]);
   parser___ReduceAction11___init(fra.me.REG[0], REGB0, init_table);
@@ -75635,13 +75637,13 @@ val_t NEW_ReduceAction12_parser___ReduceAction12___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1309;
+  fra.me.line = 1307;
   fra.me.meth = LOCATE_NEW_ReduceAction12_parser___ReduceAction12___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1309 */
+  /* ./parser//parser.nit:1307 */
   fra.me.REG[0] = NEW_ReduceAction12();
   INIT_ATTRIBUTES__ReduceAction12(fra.me.REG[0]);
   parser___ReduceAction12___init(fra.me.REG[0], REGB0, init_table);
@@ -75751,13 +75753,13 @@ val_t NEW_ReduceAction13_parser___ReduceAction13___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1345;
+  fra.me.line = 1343;
   fra.me.meth = LOCATE_NEW_ReduceAction13_parser___ReduceAction13___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1345 */
+  /* ./parser//parser.nit:1343 */
   fra.me.REG[0] = NEW_ReduceAction13();
   INIT_ATTRIBUTES__ReduceAction13(fra.me.REG[0]);
   parser___ReduceAction13___init(fra.me.REG[0], REGB0, init_table);
@@ -75867,13 +75869,13 @@ val_t NEW_ReduceAction14_parser___ReduceAction14___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1382;
+  fra.me.line = 1380;
   fra.me.meth = LOCATE_NEW_ReduceAction14_parser___ReduceAction14___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1382 */
+  /* ./parser//parser.nit:1380 */
   fra.me.REG[0] = NEW_ReduceAction14();
   INIT_ATTRIBUTES__ReduceAction14(fra.me.REG[0]);
   parser___ReduceAction14___init(fra.me.REG[0], REGB0, init_table);
@@ -75983,13 +75985,13 @@ val_t NEW_ReduceAction15_parser___ReduceAction15___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1422;
+  fra.me.line = 1420;
   fra.me.meth = LOCATE_NEW_ReduceAction15_parser___ReduceAction15___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1422 */
+  /* ./parser//parser.nit:1420 */
   fra.me.REG[0] = NEW_ReduceAction15();
   INIT_ATTRIBUTES__ReduceAction15(fra.me.REG[0]);
   parser___ReduceAction15___init(fra.me.REG[0], REGB0, init_table);
@@ -76099,13 +76101,13 @@ val_t NEW_ReduceAction16_parser___ReduceAction16___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1446;
+  fra.me.line = 1444;
   fra.me.meth = LOCATE_NEW_ReduceAction16_parser___ReduceAction16___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1446 */
+  /* ./parser//parser.nit:1444 */
   fra.me.REG[0] = NEW_ReduceAction16();
   INIT_ATTRIBUTES__ReduceAction16(fra.me.REG[0]);
   parser___ReduceAction16___init(fra.me.REG[0], REGB0, init_table);
@@ -76215,13 +76217,13 @@ val_t NEW_ReduceAction17_parser___ReduceAction17___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1473;
+  fra.me.line = 1471;
   fra.me.meth = LOCATE_NEW_ReduceAction17_parser___ReduceAction17___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1473 */
+  /* ./parser//parser.nit:1471 */
   fra.me.REG[0] = NEW_ReduceAction17();
   INIT_ATTRIBUTES__ReduceAction17(fra.me.REG[0]);
   parser___ReduceAction17___init(fra.me.REG[0], REGB0, init_table);
@@ -76331,13 +76333,13 @@ val_t NEW_ReduceAction18_parser___ReduceAction18___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1501;
+  fra.me.line = 1499;
   fra.me.meth = LOCATE_NEW_ReduceAction18_parser___ReduceAction18___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1501 */
+  /* ./parser//parser.nit:1499 */
   fra.me.REG[0] = NEW_ReduceAction18();
   INIT_ATTRIBUTES__ReduceAction18(fra.me.REG[0]);
   parser___ReduceAction18___init(fra.me.REG[0], REGB0, init_table);
@@ -76447,13 +76449,13 @@ val_t NEW_ReduceAction19_parser___ReduceAction19___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1532;
+  fra.me.line = 1530;
   fra.me.meth = LOCATE_NEW_ReduceAction19_parser___ReduceAction19___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1532 */
+  /* ./parser//parser.nit:1530 */
   fra.me.REG[0] = NEW_ReduceAction19();
   INIT_ATTRIBUTES__ReduceAction19(fra.me.REG[0]);
   parser___ReduceAction19___init(fra.me.REG[0], REGB0, init_table);
@@ -76563,13 +76565,13 @@ val_t NEW_ReduceAction20_parser___ReduceAction20___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1560;
+  fra.me.line = 1558;
   fra.me.meth = LOCATE_NEW_ReduceAction20_parser___ReduceAction20___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1560 */
+  /* ./parser//parser.nit:1558 */
   fra.me.REG[0] = NEW_ReduceAction20();
   INIT_ATTRIBUTES__ReduceAction20(fra.me.REG[0]);
   parser___ReduceAction20___init(fra.me.REG[0], REGB0, init_table);
@@ -76679,13 +76681,13 @@ val_t NEW_ReduceAction21_parser___ReduceAction21___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1591;
+  fra.me.line = 1589;
   fra.me.meth = LOCATE_NEW_ReduceAction21_parser___ReduceAction21___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1591 */
+  /* ./parser//parser.nit:1589 */
   fra.me.REG[0] = NEW_ReduceAction21();
   INIT_ATTRIBUTES__ReduceAction21(fra.me.REG[0]);
   parser___ReduceAction21___init(fra.me.REG[0], REGB0, init_table);
@@ -76795,13 +76797,13 @@ val_t NEW_ReduceAction22_parser___ReduceAction22___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1623;
+  fra.me.line = 1621;
   fra.me.meth = LOCATE_NEW_ReduceAction22_parser___ReduceAction22___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1623 */
+  /* ./parser//parser.nit:1621 */
   fra.me.REG[0] = NEW_ReduceAction22();
   INIT_ATTRIBUTES__ReduceAction22(fra.me.REG[0]);
   parser___ReduceAction22___init(fra.me.REG[0], REGB0, init_table);
@@ -76911,13 +76913,13 @@ val_t NEW_ReduceAction23_parser___ReduceAction23___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1658;
+  fra.me.line = 1656;
   fra.me.meth = LOCATE_NEW_ReduceAction23_parser___ReduceAction23___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1658 */
+  /* ./parser//parser.nit:1656 */
   fra.me.REG[0] = NEW_ReduceAction23();
   INIT_ATTRIBUTES__ReduceAction23(fra.me.REG[0]);
   parser___ReduceAction23___init(fra.me.REG[0], REGB0, init_table);
@@ -77027,13 +77029,13 @@ val_t NEW_ReduceAction24_parser___ReduceAction24___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1693;
+  fra.me.line = 1691;
   fra.me.meth = LOCATE_NEW_ReduceAction24_parser___ReduceAction24___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1693 */
+  /* ./parser//parser.nit:1691 */
   fra.me.REG[0] = NEW_ReduceAction24();
   INIT_ATTRIBUTES__ReduceAction24(fra.me.REG[0]);
   parser___ReduceAction24___init(fra.me.REG[0], REGB0, init_table);
@@ -77143,13 +77145,13 @@ val_t NEW_ReduceAction25_parser___ReduceAction25___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1731;
+  fra.me.line = 1729;
   fra.me.meth = LOCATE_NEW_ReduceAction25_parser___ReduceAction25___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1731 */
+  /* ./parser//parser.nit:1729 */
   fra.me.REG[0] = NEW_ReduceAction25();
   INIT_ATTRIBUTES__ReduceAction25(fra.me.REG[0]);
   parser___ReduceAction25___init(fra.me.REG[0], REGB0, init_table);
@@ -77259,13 +77261,13 @@ val_t NEW_ReduceAction26_parser___ReduceAction26___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1770;
+  fra.me.line = 1768;
   fra.me.meth = LOCATE_NEW_ReduceAction26_parser___ReduceAction26___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1770 */
+  /* ./parser//parser.nit:1768 */
   fra.me.REG[0] = NEW_ReduceAction26();
   INIT_ATTRIBUTES__ReduceAction26(fra.me.REG[0]);
   parser___ReduceAction26___init(fra.me.REG[0], REGB0, init_table);
@@ -77375,13 +77377,13 @@ val_t NEW_ReduceAction27_parser___ReduceAction27___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1812;
+  fra.me.line = 1810;
   fra.me.meth = LOCATE_NEW_ReduceAction27_parser___ReduceAction27___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1812 */
+  /* ./parser//parser.nit:1810 */
   fra.me.REG[0] = NEW_ReduceAction27();
   INIT_ATTRIBUTES__ReduceAction27(fra.me.REG[0]);
   parser___ReduceAction27___init(fra.me.REG[0], REGB0, init_table);
@@ -77491,13 +77493,13 @@ val_t NEW_ReduceAction28_parser___ReduceAction28___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1851;
+  fra.me.line = 1849;
   fra.me.meth = LOCATE_NEW_ReduceAction28_parser___ReduceAction28___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1851 */
+  /* ./parser//parser.nit:1849 */
   fra.me.REG[0] = NEW_ReduceAction28();
   INIT_ATTRIBUTES__ReduceAction28(fra.me.REG[0]);
   parser___ReduceAction28___init(fra.me.REG[0], REGB0, init_table);
@@ -77607,13 +77609,13 @@ val_t NEW_ReduceAction29_parser___ReduceAction29___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1893;
+  fra.me.line = 1891;
   fra.me.meth = LOCATE_NEW_ReduceAction29_parser___ReduceAction29___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1893 */
+  /* ./parser//parser.nit:1891 */
   fra.me.REG[0] = NEW_ReduceAction29();
   INIT_ATTRIBUTES__ReduceAction29(fra.me.REG[0]);
   parser___ReduceAction29___init(fra.me.REG[0], REGB0, init_table);
@@ -77723,13 +77725,13 @@ val_t NEW_ReduceAction30_parser___ReduceAction30___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1936;
+  fra.me.line = 1934;
   fra.me.meth = LOCATE_NEW_ReduceAction30_parser___ReduceAction30___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1936 */
+  /* ./parser//parser.nit:1934 */
   fra.me.REG[0] = NEW_ReduceAction30();
   INIT_ATTRIBUTES__ReduceAction30(fra.me.REG[0]);
   parser___ReduceAction30___init(fra.me.REG[0], REGB0, init_table);
@@ -77839,13 +77841,13 @@ val_t NEW_ReduceAction31_parser___ReduceAction31___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 1982;
+  fra.me.line = 1980;
   fra.me.meth = LOCATE_NEW_ReduceAction31_parser___ReduceAction31___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:1982 */
+  /* ./parser//parser.nit:1980 */
   fra.me.REG[0] = NEW_ReduceAction31();
   INIT_ATTRIBUTES__ReduceAction31(fra.me.REG[0]);
   parser___ReduceAction31___init(fra.me.REG[0], REGB0, init_table);
@@ -77955,13 +77957,13 @@ val_t NEW_ReduceAction32_parser___ReduceAction32___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2009;
+  fra.me.line = 2007;
   fra.me.meth = LOCATE_NEW_ReduceAction32_parser___ReduceAction32___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2009 */
+  /* ./parser//parser.nit:2007 */
   fra.me.REG[0] = NEW_ReduceAction32();
   INIT_ATTRIBUTES__ReduceAction32(fra.me.REG[0]);
   parser___ReduceAction32___init(fra.me.REG[0], REGB0, init_table);
@@ -78071,13 +78073,13 @@ val_t NEW_ReduceAction33_parser___ReduceAction33___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2037;
+  fra.me.line = 2035;
   fra.me.meth = LOCATE_NEW_ReduceAction33_parser___ReduceAction33___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2037 */
+  /* ./parser//parser.nit:2035 */
   fra.me.REG[0] = NEW_ReduceAction33();
   INIT_ATTRIBUTES__ReduceAction33(fra.me.REG[0]);
   parser___ReduceAction33___init(fra.me.REG[0], REGB0, init_table);
@@ -78187,13 +78189,13 @@ val_t NEW_ReduceAction34_parser___ReduceAction34___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2065;
+  fra.me.line = 2063;
   fra.me.meth = LOCATE_NEW_ReduceAction34_parser___ReduceAction34___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2065 */
+  /* ./parser//parser.nit:2063 */
   fra.me.REG[0] = NEW_ReduceAction34();
   INIT_ATTRIBUTES__ReduceAction34(fra.me.REG[0]);
   parser___ReduceAction34___init(fra.me.REG[0], REGB0, init_table);
@@ -78303,13 +78305,13 @@ val_t NEW_ReduceAction35_parser___ReduceAction35___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2086;
+  fra.me.line = 2084;
   fra.me.meth = LOCATE_NEW_ReduceAction35_parser___ReduceAction35___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2086 */
+  /* ./parser//parser.nit:2084 */
   fra.me.REG[0] = NEW_ReduceAction35();
   INIT_ATTRIBUTES__ReduceAction35(fra.me.REG[0]);
   parser___ReduceAction35___init(fra.me.REG[0], REGB0, init_table);
@@ -78419,13 +78421,13 @@ val_t NEW_ReduceAction36_parser___ReduceAction36___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2098;
+  fra.me.line = 2096;
   fra.me.meth = LOCATE_NEW_ReduceAction36_parser___ReduceAction36___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2098 */
+  /* ./parser//parser.nit:2096 */
   fra.me.REG[0] = NEW_ReduceAction36();
   INIT_ATTRIBUTES__ReduceAction36(fra.me.REG[0]);
   parser___ReduceAction36___init(fra.me.REG[0], REGB0, init_table);
@@ -78535,13 +78537,13 @@ val_t NEW_ReduceAction37_parser___ReduceAction37___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2117;
+  fra.me.line = 2115;
   fra.me.meth = LOCATE_NEW_ReduceAction37_parser___ReduceAction37___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2117 */
+  /* ./parser//parser.nit:2115 */
   fra.me.REG[0] = NEW_ReduceAction37();
   INIT_ATTRIBUTES__ReduceAction37(fra.me.REG[0]);
   parser___ReduceAction37___init(fra.me.REG[0], REGB0, init_table);
@@ -78651,13 +78653,13 @@ val_t NEW_ReduceAction39_parser___ReduceAction39___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2156;
+  fra.me.line = 2154;
   fra.me.meth = LOCATE_NEW_ReduceAction39_parser___ReduceAction39___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2156 */
+  /* ./parser//parser.nit:2154 */
   fra.me.REG[0] = NEW_ReduceAction39();
   INIT_ATTRIBUTES__ReduceAction39(fra.me.REG[0]);
   parser___ReduceAction39___init(fra.me.REG[0], REGB0, init_table);
@@ -78767,13 +78769,13 @@ val_t NEW_ReduceAction40_parser___ReduceAction40___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2198;
+  fra.me.line = 2196;
   fra.me.meth = LOCATE_NEW_ReduceAction40_parser___ReduceAction40___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2198 */
+  /* ./parser//parser.nit:2196 */
   fra.me.REG[0] = NEW_ReduceAction40();
   INIT_ATTRIBUTES__ReduceAction40(fra.me.REG[0]);
   parser___ReduceAction40___init(fra.me.REG[0], REGB0, init_table);
@@ -78883,13 +78885,13 @@ val_t NEW_ReduceAction41_parser___ReduceAction41___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2241;
+  fra.me.line = 2239;
   fra.me.meth = LOCATE_NEW_ReduceAction41_parser___ReduceAction41___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2241 */
+  /* ./parser//parser.nit:2239 */
   fra.me.REG[0] = NEW_ReduceAction41();
   INIT_ATTRIBUTES__ReduceAction41(fra.me.REG[0]);
   parser___ReduceAction41___init(fra.me.REG[0], REGB0, init_table);
@@ -78999,13 +79001,13 @@ val_t NEW_ReduceAction42_parser___ReduceAction42___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2287;
+  fra.me.line = 2285;
   fra.me.meth = LOCATE_NEW_ReduceAction42_parser___ReduceAction42___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2287 */
+  /* ./parser//parser.nit:2285 */
   fra.me.REG[0] = NEW_ReduceAction42();
   INIT_ATTRIBUTES__ReduceAction42(fra.me.REG[0]);
   parser___ReduceAction42___init(fra.me.REG[0], REGB0, init_table);
@@ -79115,13 +79117,13 @@ val_t NEW_ReduceAction43_parser___ReduceAction43___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2330;
+  fra.me.line = 2328;
   fra.me.meth = LOCATE_NEW_ReduceAction43_parser___ReduceAction43___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2330 */
+  /* ./parser//parser.nit:2328 */
   fra.me.REG[0] = NEW_ReduceAction43();
   INIT_ATTRIBUTES__ReduceAction43(fra.me.REG[0]);
   parser___ReduceAction43___init(fra.me.REG[0], REGB0, init_table);
@@ -79231,13 +79233,13 @@ val_t NEW_ReduceAction44_parser___ReduceAction44___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2376;
+  fra.me.line = 2374;
   fra.me.meth = LOCATE_NEW_ReduceAction44_parser___ReduceAction44___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2376 */
+  /* ./parser//parser.nit:2374 */
   fra.me.REG[0] = NEW_ReduceAction44();
   INIT_ATTRIBUTES__ReduceAction44(fra.me.REG[0]);
   parser___ReduceAction44___init(fra.me.REG[0], REGB0, init_table);
@@ -79347,13 +79349,13 @@ val_t NEW_ReduceAction45_parser___ReduceAction45___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2423;
+  fra.me.line = 2421;
   fra.me.meth = LOCATE_NEW_ReduceAction45_parser___ReduceAction45___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2423 */
+  /* ./parser//parser.nit:2421 */
   fra.me.REG[0] = NEW_ReduceAction45();
   INIT_ATTRIBUTES__ReduceAction45(fra.me.REG[0]);
   parser___ReduceAction45___init(fra.me.REG[0], REGB0, init_table);
@@ -79463,13 +79465,13 @@ val_t NEW_ReduceAction46_parser___ReduceAction46___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2473;
+  fra.me.line = 2471;
   fra.me.meth = LOCATE_NEW_ReduceAction46_parser___ReduceAction46___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2473 */
+  /* ./parser//parser.nit:2471 */
   fra.me.REG[0] = NEW_ReduceAction46();
   INIT_ATTRIBUTES__ReduceAction46(fra.me.REG[0]);
   parser___ReduceAction46___init(fra.me.REG[0], REGB0, init_table);
@@ -79579,13 +79581,13 @@ val_t NEW_ReduceAction47_parser___ReduceAction47___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2516;
+  fra.me.line = 2514;
   fra.me.meth = LOCATE_NEW_ReduceAction47_parser___ReduceAction47___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2516 */
+  /* ./parser//parser.nit:2514 */
   fra.me.REG[0] = NEW_ReduceAction47();
   INIT_ATTRIBUTES__ReduceAction47(fra.me.REG[0]);
   parser___ReduceAction47___init(fra.me.REG[0], REGB0, init_table);
@@ -79695,13 +79697,13 @@ val_t NEW_ReduceAction48_parser___ReduceAction48___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2562;
+  fra.me.line = 2560;
   fra.me.meth = LOCATE_NEW_ReduceAction48_parser___ReduceAction48___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2562 */
+  /* ./parser//parser.nit:2560 */
   fra.me.REG[0] = NEW_ReduceAction48();
   INIT_ATTRIBUTES__ReduceAction48(fra.me.REG[0]);
   parser___ReduceAction48___init(fra.me.REG[0], REGB0, init_table);
@@ -79811,13 +79813,13 @@ val_t NEW_ReduceAction49_parser___ReduceAction49___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2609;
+  fra.me.line = 2607;
   fra.me.meth = LOCATE_NEW_ReduceAction49_parser___ReduceAction49___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2609 */
+  /* ./parser//parser.nit:2607 */
   fra.me.REG[0] = NEW_ReduceAction49();
   INIT_ATTRIBUTES__ReduceAction49(fra.me.REG[0]);
   parser___ReduceAction49___init(fra.me.REG[0], REGB0, init_table);
@@ -79927,13 +79929,13 @@ val_t NEW_ReduceAction50_parser___ReduceAction50___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2659;
+  fra.me.line = 2657;
   fra.me.meth = LOCATE_NEW_ReduceAction50_parser___ReduceAction50___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2659 */
+  /* ./parser//parser.nit:2657 */
   fra.me.REG[0] = NEW_ReduceAction50();
   INIT_ATTRIBUTES__ReduceAction50(fra.me.REG[0]);
   parser___ReduceAction50___init(fra.me.REG[0], REGB0, init_table);
@@ -80043,13 +80045,13 @@ val_t NEW_ReduceAction51_parser___ReduceAction51___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2706;
+  fra.me.line = 2704;
   fra.me.meth = LOCATE_NEW_ReduceAction51_parser___ReduceAction51___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2706 */
+  /* ./parser//parser.nit:2704 */
   fra.me.REG[0] = NEW_ReduceAction51();
   INIT_ATTRIBUTES__ReduceAction51(fra.me.REG[0]);
   parser___ReduceAction51___init(fra.me.REG[0], REGB0, init_table);
@@ -80159,13 +80161,13 @@ val_t NEW_ReduceAction52_parser___ReduceAction52___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2756;
+  fra.me.line = 2754;
   fra.me.meth = LOCATE_NEW_ReduceAction52_parser___ReduceAction52___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2756 */
+  /* ./parser//parser.nit:2754 */
   fra.me.REG[0] = NEW_ReduceAction52();
   INIT_ATTRIBUTES__ReduceAction52(fra.me.REG[0]);
   parser___ReduceAction52___init(fra.me.REG[0], REGB0, init_table);
@@ -80275,13 +80277,13 @@ val_t NEW_ReduceAction53_parser___ReduceAction53___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2807;
+  fra.me.line = 2805;
   fra.me.meth = LOCATE_NEW_ReduceAction53_parser___ReduceAction53___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2807 */
+  /* ./parser//parser.nit:2805 */
   fra.me.REG[0] = NEW_ReduceAction53();
   INIT_ATTRIBUTES__ReduceAction53(fra.me.REG[0]);
   parser___ReduceAction53___init(fra.me.REG[0], REGB0, init_table);
@@ -80391,13 +80393,13 @@ val_t NEW_ReduceAction54_parser___ReduceAction54___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2861;
+  fra.me.line = 2859;
   fra.me.meth = LOCATE_NEW_ReduceAction54_parser___ReduceAction54___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2861 */
+  /* ./parser//parser.nit:2859 */
   fra.me.REG[0] = NEW_ReduceAction54();
   INIT_ATTRIBUTES__ReduceAction54(fra.me.REG[0]);
   parser___ReduceAction54___init(fra.me.REG[0], REGB0, init_table);
@@ -80507,13 +80509,13 @@ val_t NEW_ReduceAction55_parser___ReduceAction55___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2878;
+  fra.me.line = 2876;
   fra.me.meth = LOCATE_NEW_ReduceAction55_parser___ReduceAction55___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2878 */
+  /* ./parser//parser.nit:2876 */
   fra.me.REG[0] = NEW_ReduceAction55();
   INIT_ATTRIBUTES__ReduceAction55(fra.me.REG[0]);
   parser___ReduceAction55___init(fra.me.REG[0], REGB0, init_table);
@@ -80623,13 +80625,13 @@ val_t NEW_ReduceAction56_parser___ReduceAction56___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2899;
+  fra.me.line = 2897;
   fra.me.meth = LOCATE_NEW_ReduceAction56_parser___ReduceAction56___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2899 */
+  /* ./parser//parser.nit:2897 */
   fra.me.REG[0] = NEW_ReduceAction56();
   INIT_ATTRIBUTES__ReduceAction56(fra.me.REG[0]);
   parser___ReduceAction56___init(fra.me.REG[0], REGB0, init_table);
@@ -80739,13 +80741,13 @@ val_t NEW_ReduceAction57_parser___ReduceAction57___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2916;
+  fra.me.line = 2914;
   fra.me.meth = LOCATE_NEW_ReduceAction57_parser___ReduceAction57___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2916 */
+  /* ./parser//parser.nit:2914 */
   fra.me.REG[0] = NEW_ReduceAction57();
   INIT_ATTRIBUTES__ReduceAction57(fra.me.REG[0]);
   parser___ReduceAction57___init(fra.me.REG[0], REGB0, init_table);
@@ -80855,13 +80857,13 @@ val_t NEW_ReduceAction58_parser___ReduceAction58___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2933;
+  fra.me.line = 2931;
   fra.me.meth = LOCATE_NEW_ReduceAction58_parser___ReduceAction58___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2933 */
+  /* ./parser//parser.nit:2931 */
   fra.me.REG[0] = NEW_ReduceAction58();
   INIT_ATTRIBUTES__ReduceAction58(fra.me.REG[0]);
   parser___ReduceAction58___init(fra.me.REG[0], REGB0, init_table);
@@ -80971,13 +80973,13 @@ val_t NEW_ReduceAction59_parser___ReduceAction59___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2954;
+  fra.me.line = 2952;
   fra.me.meth = LOCATE_NEW_ReduceAction59_parser___ReduceAction59___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2954 */
+  /* ./parser//parser.nit:2952 */
   fra.me.REG[0] = NEW_ReduceAction59();
   INIT_ATTRIBUTES__ReduceAction59(fra.me.REG[0]);
   parser___ReduceAction59___init(fra.me.REG[0], REGB0, init_table);
@@ -81087,13 +81089,13 @@ val_t NEW_ReduceAction60_parser___ReduceAction60___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2979;
+  fra.me.line = 2977;
   fra.me.meth = LOCATE_NEW_ReduceAction60_parser___ReduceAction60___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2979 */
+  /* ./parser//parser.nit:2977 */
   fra.me.REG[0] = NEW_ReduceAction60();
   INIT_ATTRIBUTES__ReduceAction60(fra.me.REG[0]);
   parser___ReduceAction60___init(fra.me.REG[0], REGB0, init_table);
@@ -81203,13 +81205,13 @@ val_t NEW_ReduceAction61_parser___ReduceAction61___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 2994;
+  fra.me.line = 2992;
   fra.me.meth = LOCATE_NEW_ReduceAction61_parser___ReduceAction61___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:2994 */
+  /* ./parser//parser.nit:2992 */
   fra.me.REG[0] = NEW_ReduceAction61();
   INIT_ATTRIBUTES__ReduceAction61(fra.me.REG[0]);
   parser___ReduceAction61___init(fra.me.REG[0], REGB0, init_table);
@@ -81319,13 +81321,13 @@ val_t NEW_ReduceAction62_parser___ReduceAction62___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3012;
+  fra.me.line = 3010;
   fra.me.meth = LOCATE_NEW_ReduceAction62_parser___ReduceAction62___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3012 */
+  /* ./parser//parser.nit:3010 */
   fra.me.REG[0] = NEW_ReduceAction62();
   INIT_ATTRIBUTES__ReduceAction62(fra.me.REG[0]);
   parser___ReduceAction62___init(fra.me.REG[0], REGB0, init_table);
@@ -81435,13 +81437,13 @@ val_t NEW_ReduceAction63_parser___ReduceAction63___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3033;
+  fra.me.line = 3031;
   fra.me.meth = LOCATE_NEW_ReduceAction63_parser___ReduceAction63___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3033 */
+  /* ./parser//parser.nit:3031 */
   fra.me.REG[0] = NEW_ReduceAction63();
   INIT_ATTRIBUTES__ReduceAction63(fra.me.REG[0]);
   parser___ReduceAction63___init(fra.me.REG[0], REGB0, init_table);
@@ -81551,13 +81553,13 @@ val_t NEW_ReduceAction64_parser___ReduceAction64___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3057;
+  fra.me.line = 3055;
   fra.me.meth = LOCATE_NEW_ReduceAction64_parser___ReduceAction64___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3057 */
+  /* ./parser//parser.nit:3055 */
   fra.me.REG[0] = NEW_ReduceAction64();
   INIT_ATTRIBUTES__ReduceAction64(fra.me.REG[0]);
   parser___ReduceAction64___init(fra.me.REG[0], REGB0, init_table);
@@ -81667,13 +81669,13 @@ val_t NEW_ReduceAction65_parser___ReduceAction65___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3081;
+  fra.me.line = 3079;
   fra.me.meth = LOCATE_NEW_ReduceAction65_parser___ReduceAction65___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3081 */
+  /* ./parser//parser.nit:3079 */
   fra.me.REG[0] = NEW_ReduceAction65();
   INIT_ATTRIBUTES__ReduceAction65(fra.me.REG[0]);
   parser___ReduceAction65___init(fra.me.REG[0], REGB0, init_table);
@@ -81783,13 +81785,13 @@ val_t NEW_ReduceAction66_parser___ReduceAction66___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3095;
+  fra.me.line = 3093;
   fra.me.meth = LOCATE_NEW_ReduceAction66_parser___ReduceAction66___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3095 */
+  /* ./parser//parser.nit:3093 */
   fra.me.REG[0] = NEW_ReduceAction66();
   INIT_ATTRIBUTES__ReduceAction66(fra.me.REG[0]);
   parser___ReduceAction66___init(fra.me.REG[0], REGB0, init_table);
@@ -81899,13 +81901,13 @@ val_t NEW_ReduceAction67_parser___ReduceAction67___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3134;
+  fra.me.line = 3132;
   fra.me.meth = LOCATE_NEW_ReduceAction67_parser___ReduceAction67___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3134 */
+  /* ./parser//parser.nit:3132 */
   fra.me.REG[0] = NEW_ReduceAction67();
   INIT_ATTRIBUTES__ReduceAction67(fra.me.REG[0]);
   parser___ReduceAction67___init(fra.me.REG[0], REGB0, init_table);
@@ -82015,13 +82017,13 @@ val_t NEW_ReduceAction68_parser___ReduceAction68___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3176;
+  fra.me.line = 3174;
   fra.me.meth = LOCATE_NEW_ReduceAction68_parser___ReduceAction68___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3176 */
+  /* ./parser//parser.nit:3174 */
   fra.me.REG[0] = NEW_ReduceAction68();
   INIT_ATTRIBUTES__ReduceAction68(fra.me.REG[0]);
   parser___ReduceAction68___init(fra.me.REG[0], REGB0, init_table);
@@ -82131,13 +82133,13 @@ val_t NEW_ReduceAction69_parser___ReduceAction69___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3216;
+  fra.me.line = 3214;
   fra.me.meth = LOCATE_NEW_ReduceAction69_parser___ReduceAction69___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3216 */
+  /* ./parser//parser.nit:3214 */
   fra.me.REG[0] = NEW_ReduceAction69();
   INIT_ATTRIBUTES__ReduceAction69(fra.me.REG[0]);
   parser___ReduceAction69___init(fra.me.REG[0], REGB0, init_table);
@@ -82247,13 +82249,13 @@ val_t NEW_ReduceAction70_parser___ReduceAction70___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3259;
+  fra.me.line = 3257;
   fra.me.meth = LOCATE_NEW_ReduceAction70_parser___ReduceAction70___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3259 */
+  /* ./parser//parser.nit:3257 */
   fra.me.REG[0] = NEW_ReduceAction70();
   INIT_ATTRIBUTES__ReduceAction70(fra.me.REG[0]);
   parser___ReduceAction70___init(fra.me.REG[0], REGB0, init_table);
@@ -82363,13 +82365,13 @@ val_t NEW_ReduceAction71_parser___ReduceAction71___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3299;
+  fra.me.line = 3297;
   fra.me.meth = LOCATE_NEW_ReduceAction71_parser___ReduceAction71___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3299 */
+  /* ./parser//parser.nit:3297 */
   fra.me.REG[0] = NEW_ReduceAction71();
   INIT_ATTRIBUTES__ReduceAction71(fra.me.REG[0]);
   parser___ReduceAction71___init(fra.me.REG[0], REGB0, init_table);
@@ -82479,13 +82481,13 @@ val_t NEW_ReduceAction72_parser___ReduceAction72___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3342;
+  fra.me.line = 3340;
   fra.me.meth = LOCATE_NEW_ReduceAction72_parser___ReduceAction72___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3342 */
+  /* ./parser//parser.nit:3340 */
   fra.me.REG[0] = NEW_ReduceAction72();
   INIT_ATTRIBUTES__ReduceAction72(fra.me.REG[0]);
   parser___ReduceAction72___init(fra.me.REG[0], REGB0, init_table);
@@ -82595,13 +82597,13 @@ val_t NEW_ReduceAction73_parser___ReduceAction73___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3378;
+  fra.me.line = 3376;
   fra.me.meth = LOCATE_NEW_ReduceAction73_parser___ReduceAction73___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3378 */
+  /* ./parser//parser.nit:3376 */
   fra.me.REG[0] = NEW_ReduceAction73();
   INIT_ATTRIBUTES__ReduceAction73(fra.me.REG[0]);
   parser___ReduceAction73___init(fra.me.REG[0], REGB0, init_table);
@@ -82711,13 +82713,13 @@ val_t NEW_ReduceAction74_parser___ReduceAction74___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3417;
+  fra.me.line = 3415;
   fra.me.meth = LOCATE_NEW_ReduceAction74_parser___ReduceAction74___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3417 */
+  /* ./parser//parser.nit:3415 */
   fra.me.REG[0] = NEW_ReduceAction74();
   INIT_ATTRIBUTES__ReduceAction74(fra.me.REG[0]);
   parser___ReduceAction74___init(fra.me.REG[0], REGB0, init_table);
@@ -82827,13 +82829,13 @@ val_t NEW_ReduceAction75_parser___ReduceAction75___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3453;
+  fra.me.line = 3451;
   fra.me.meth = LOCATE_NEW_ReduceAction75_parser___ReduceAction75___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3453 */
+  /* ./parser//parser.nit:3451 */
   fra.me.REG[0] = NEW_ReduceAction75();
   INIT_ATTRIBUTES__ReduceAction75(fra.me.REG[0]);
   parser___ReduceAction75___init(fra.me.REG[0], REGB0, init_table);
@@ -82943,13 +82945,13 @@ val_t NEW_ReduceAction76_parser___ReduceAction76___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3492;
+  fra.me.line = 3490;
   fra.me.meth = LOCATE_NEW_ReduceAction76_parser___ReduceAction76___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3492 */
+  /* ./parser//parser.nit:3490 */
   fra.me.REG[0] = NEW_ReduceAction76();
   INIT_ATTRIBUTES__ReduceAction76(fra.me.REG[0]);
   parser___ReduceAction76___init(fra.me.REG[0], REGB0, init_table);
@@ -83059,13 +83061,13 @@ val_t NEW_ReduceAction77_parser___ReduceAction77___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3529;
+  fra.me.line = 3527;
   fra.me.meth = LOCATE_NEW_ReduceAction77_parser___ReduceAction77___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3529 */
+  /* ./parser//parser.nit:3527 */
   fra.me.REG[0] = NEW_ReduceAction77();
   INIT_ATTRIBUTES__ReduceAction77(fra.me.REG[0]);
   parser___ReduceAction77___init(fra.me.REG[0], REGB0, init_table);
@@ -83175,13 +83177,13 @@ val_t NEW_ReduceAction78_parser___ReduceAction78___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3569;
+  fra.me.line = 3567;
   fra.me.meth = LOCATE_NEW_ReduceAction78_parser___ReduceAction78___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3569 */
+  /* ./parser//parser.nit:3567 */
   fra.me.REG[0] = NEW_ReduceAction78();
   INIT_ATTRIBUTES__ReduceAction78(fra.me.REG[0]);
   parser___ReduceAction78___init(fra.me.REG[0], REGB0, init_table);
@@ -83291,13 +83293,13 @@ val_t NEW_ReduceAction79_parser___ReduceAction79___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3609;
+  fra.me.line = 3607;
   fra.me.meth = LOCATE_NEW_ReduceAction79_parser___ReduceAction79___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3609 */
+  /* ./parser//parser.nit:3607 */
   fra.me.REG[0] = NEW_ReduceAction79();
   INIT_ATTRIBUTES__ReduceAction79(fra.me.REG[0]);
   parser___ReduceAction79___init(fra.me.REG[0], REGB0, init_table);
@@ -83407,13 +83409,13 @@ val_t NEW_ReduceAction80_parser___ReduceAction80___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3652;
+  fra.me.line = 3650;
   fra.me.meth = LOCATE_NEW_ReduceAction80_parser___ReduceAction80___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3652 */
+  /* ./parser//parser.nit:3650 */
   fra.me.REG[0] = NEW_ReduceAction80();
   INIT_ATTRIBUTES__ReduceAction80(fra.me.REG[0]);
   parser___ReduceAction80___init(fra.me.REG[0], REGB0, init_table);
@@ -83523,13 +83525,13 @@ val_t NEW_ReduceAction81_parser___ReduceAction81___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3687;
+  fra.me.line = 3685;
   fra.me.meth = LOCATE_NEW_ReduceAction81_parser___ReduceAction81___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3687 */
+  /* ./parser//parser.nit:3685 */
   fra.me.REG[0] = NEW_ReduceAction81();
   INIT_ATTRIBUTES__ReduceAction81(fra.me.REG[0]);
   parser___ReduceAction81___init(fra.me.REG[0], REGB0, init_table);
@@ -83639,13 +83641,13 @@ val_t NEW_ReduceAction82_parser___ReduceAction82___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3725;
+  fra.me.line = 3723;
   fra.me.meth = LOCATE_NEW_ReduceAction82_parser___ReduceAction82___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3725 */
+  /* ./parser//parser.nit:3723 */
   fra.me.REG[0] = NEW_ReduceAction82();
   INIT_ATTRIBUTES__ReduceAction82(fra.me.REG[0]);
   parser___ReduceAction82___init(fra.me.REG[0], REGB0, init_table);
@@ -83755,13 +83757,13 @@ val_t NEW_ReduceAction83_parser___ReduceAction83___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3763;
+  fra.me.line = 3761;
   fra.me.meth = LOCATE_NEW_ReduceAction83_parser___ReduceAction83___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3763 */
+  /* ./parser//parser.nit:3761 */
   fra.me.REG[0] = NEW_ReduceAction83();
   INIT_ATTRIBUTES__ReduceAction83(fra.me.REG[0]);
   parser___ReduceAction83___init(fra.me.REG[0], REGB0, init_table);
@@ -83871,13 +83873,13 @@ val_t NEW_ReduceAction84_parser___ReduceAction84___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3804;
+  fra.me.line = 3802;
   fra.me.meth = LOCATE_NEW_ReduceAction84_parser___ReduceAction84___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3804 */
+  /* ./parser//parser.nit:3802 */
   fra.me.REG[0] = NEW_ReduceAction84();
   INIT_ATTRIBUTES__ReduceAction84(fra.me.REG[0]);
   parser___ReduceAction84___init(fra.me.REG[0], REGB0, init_table);
@@ -83987,13 +83989,13 @@ val_t NEW_ReduceAction85_parser___ReduceAction85___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3842;
+  fra.me.line = 3840;
   fra.me.meth = LOCATE_NEW_ReduceAction85_parser___ReduceAction85___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3842 */
+  /* ./parser//parser.nit:3840 */
   fra.me.REG[0] = NEW_ReduceAction85();
   INIT_ATTRIBUTES__ReduceAction85(fra.me.REG[0]);
   parser___ReduceAction85___init(fra.me.REG[0], REGB0, init_table);
@@ -84103,13 +84105,13 @@ val_t NEW_ReduceAction86_parser___ReduceAction86___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3883;
+  fra.me.line = 3881;
   fra.me.meth = LOCATE_NEW_ReduceAction86_parser___ReduceAction86___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3883 */
+  /* ./parser//parser.nit:3881 */
   fra.me.REG[0] = NEW_ReduceAction86();
   INIT_ATTRIBUTES__ReduceAction86(fra.me.REG[0]);
   parser___ReduceAction86___init(fra.me.REG[0], REGB0, init_table);
@@ -84219,13 +84221,13 @@ val_t NEW_ReduceAction87_parser___ReduceAction87___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3924;
+  fra.me.line = 3922;
   fra.me.meth = LOCATE_NEW_ReduceAction87_parser___ReduceAction87___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3924 */
+  /* ./parser//parser.nit:3922 */
   fra.me.REG[0] = NEW_ReduceAction87();
   INIT_ATTRIBUTES__ReduceAction87(fra.me.REG[0]);
   parser___ReduceAction87___init(fra.me.REG[0], REGB0, init_table);
@@ -84335,13 +84337,13 @@ val_t NEW_ReduceAction88_parser___ReduceAction88___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 3968;
+  fra.me.line = 3966;
   fra.me.meth = LOCATE_NEW_ReduceAction88_parser___ReduceAction88___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:3968 */
+  /* ./parser//parser.nit:3966 */
   fra.me.REG[0] = NEW_ReduceAction88();
   INIT_ATTRIBUTES__ReduceAction88(fra.me.REG[0]);
   parser___ReduceAction88___init(fra.me.REG[0], REGB0, init_table);
@@ -84451,13 +84453,13 @@ val_t NEW_ReduceAction89_parser___ReduceAction89___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4006;
+  fra.me.line = 4004;
   fra.me.meth = LOCATE_NEW_ReduceAction89_parser___ReduceAction89___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4006 */
+  /* ./parser//parser.nit:4004 */
   fra.me.REG[0] = NEW_ReduceAction89();
   INIT_ATTRIBUTES__ReduceAction89(fra.me.REG[0]);
   parser___ReduceAction89___init(fra.me.REG[0], REGB0, init_table);
@@ -84567,13 +84569,13 @@ val_t NEW_ReduceAction90_parser___ReduceAction90___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4047;
+  fra.me.line = 4045;
   fra.me.meth = LOCATE_NEW_ReduceAction90_parser___ReduceAction90___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4047 */
+  /* ./parser//parser.nit:4045 */
   fra.me.REG[0] = NEW_ReduceAction90();
   INIT_ATTRIBUTES__ReduceAction90(fra.me.REG[0]);
   parser___ReduceAction90___init(fra.me.REG[0], REGB0, init_table);
@@ -84683,13 +84685,13 @@ val_t NEW_ReduceAction91_parser___ReduceAction91___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4088;
+  fra.me.line = 4086;
   fra.me.meth = LOCATE_NEW_ReduceAction91_parser___ReduceAction91___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4088 */
+  /* ./parser//parser.nit:4086 */
   fra.me.REG[0] = NEW_ReduceAction91();
   INIT_ATTRIBUTES__ReduceAction91(fra.me.REG[0]);
   parser___ReduceAction91___init(fra.me.REG[0], REGB0, init_table);
@@ -84799,13 +84801,13 @@ val_t NEW_ReduceAction92_parser___ReduceAction92___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4132;
+  fra.me.line = 4130;
   fra.me.meth = LOCATE_NEW_ReduceAction92_parser___ReduceAction92___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4132 */
+  /* ./parser//parser.nit:4130 */
   fra.me.REG[0] = NEW_ReduceAction92();
   INIT_ATTRIBUTES__ReduceAction92(fra.me.REG[0]);
   parser___ReduceAction92___init(fra.me.REG[0], REGB0, init_table);
@@ -84915,13 +84917,13 @@ val_t NEW_ReduceAction93_parser___ReduceAction93___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4173;
+  fra.me.line = 4171;
   fra.me.meth = LOCATE_NEW_ReduceAction93_parser___ReduceAction93___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4173 */
+  /* ./parser//parser.nit:4171 */
   fra.me.REG[0] = NEW_ReduceAction93();
   INIT_ATTRIBUTES__ReduceAction93(fra.me.REG[0]);
   parser___ReduceAction93___init(fra.me.REG[0], REGB0, init_table);
@@ -85031,13 +85033,13 @@ val_t NEW_ReduceAction94_parser___ReduceAction94___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4217;
+  fra.me.line = 4215;
   fra.me.meth = LOCATE_NEW_ReduceAction94_parser___ReduceAction94___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4217 */
+  /* ./parser//parser.nit:4215 */
   fra.me.REG[0] = NEW_ReduceAction94();
   INIT_ATTRIBUTES__ReduceAction94(fra.me.REG[0]);
   parser___ReduceAction94___init(fra.me.REG[0], REGB0, init_table);
@@ -85147,13 +85149,13 @@ val_t NEW_ReduceAction95_parser___ReduceAction95___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4261;
+  fra.me.line = 4259;
   fra.me.meth = LOCATE_NEW_ReduceAction95_parser___ReduceAction95___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4261 */
+  /* ./parser//parser.nit:4259 */
   fra.me.REG[0] = NEW_ReduceAction95();
   INIT_ATTRIBUTES__ReduceAction95(fra.me.REG[0]);
   parser___ReduceAction95___init(fra.me.REG[0], REGB0, init_table);
@@ -85263,13 +85265,13 @@ val_t NEW_ReduceAction96_parser___ReduceAction96___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4308;
+  fra.me.line = 4306;
   fra.me.meth = LOCATE_NEW_ReduceAction96_parser___ReduceAction96___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4308 */
+  /* ./parser//parser.nit:4306 */
   fra.me.REG[0] = NEW_ReduceAction96();
   INIT_ATTRIBUTES__ReduceAction96(fra.me.REG[0]);
   parser___ReduceAction96___init(fra.me.REG[0], REGB0, init_table);
@@ -85379,13 +85381,13 @@ val_t NEW_ReduceAction97_parser___ReduceAction97___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4348;
+  fra.me.line = 4346;
   fra.me.meth = LOCATE_NEW_ReduceAction97_parser___ReduceAction97___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4348 */
+  /* ./parser//parser.nit:4346 */
   fra.me.REG[0] = NEW_ReduceAction97();
   INIT_ATTRIBUTES__ReduceAction97(fra.me.REG[0]);
   parser___ReduceAction97___init(fra.me.REG[0], REGB0, init_table);
@@ -85495,13 +85497,13 @@ val_t NEW_ReduceAction98_parser___ReduceAction98___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4391;
+  fra.me.line = 4389;
   fra.me.meth = LOCATE_NEW_ReduceAction98_parser___ReduceAction98___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4391 */
+  /* ./parser//parser.nit:4389 */
   fra.me.REG[0] = NEW_ReduceAction98();
   INIT_ATTRIBUTES__ReduceAction98(fra.me.REG[0]);
   parser___ReduceAction98___init(fra.me.REG[0], REGB0, init_table);
@@ -85611,13 +85613,13 @@ val_t NEW_ReduceAction99_parser___ReduceAction99___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4434;
+  fra.me.line = 4432;
   fra.me.meth = LOCATE_NEW_ReduceAction99_parser___ReduceAction99___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4434 */
+  /* ./parser//parser.nit:4432 */
   fra.me.REG[0] = NEW_ReduceAction99();
   INIT_ATTRIBUTES__ReduceAction99(fra.me.REG[0]);
   parser___ReduceAction99___init(fra.me.REG[0], REGB0, init_table);
@@ -85727,13 +85729,13 @@ val_t NEW_ReduceAction100_parser___ReduceAction100___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4480;
+  fra.me.line = 4478;
   fra.me.meth = LOCATE_NEW_ReduceAction100_parser___ReduceAction100___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4480 */
+  /* ./parser//parser.nit:4478 */
   fra.me.REG[0] = NEW_ReduceAction100();
   INIT_ATTRIBUTES__ReduceAction100(fra.me.REG[0]);
   parser___ReduceAction100___init(fra.me.REG[0], REGB0, init_table);
@@ -85843,13 +85845,13 @@ val_t NEW_ReduceAction101_parser___ReduceAction101___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4523;
+  fra.me.line = 4521;
   fra.me.meth = LOCATE_NEW_ReduceAction101_parser___ReduceAction101___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4523 */
+  /* ./parser//parser.nit:4521 */
   fra.me.REG[0] = NEW_ReduceAction101();
   INIT_ATTRIBUTES__ReduceAction101(fra.me.REG[0]);
   parser___ReduceAction101___init(fra.me.REG[0], REGB0, init_table);
@@ -85959,13 +85961,13 @@ val_t NEW_ReduceAction102_parser___ReduceAction102___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4569;
+  fra.me.line = 4567;
   fra.me.meth = LOCATE_NEW_ReduceAction102_parser___ReduceAction102___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4569 */
+  /* ./parser//parser.nit:4567 */
   fra.me.REG[0] = NEW_ReduceAction102();
   INIT_ATTRIBUTES__ReduceAction102(fra.me.REG[0]);
   parser___ReduceAction102___init(fra.me.REG[0], REGB0, init_table);
@@ -86075,13 +86077,13 @@ val_t NEW_ReduceAction103_parser___ReduceAction103___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4615;
+  fra.me.line = 4613;
   fra.me.meth = LOCATE_NEW_ReduceAction103_parser___ReduceAction103___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4615 */
+  /* ./parser//parser.nit:4613 */
   fra.me.REG[0] = NEW_ReduceAction103();
   INIT_ATTRIBUTES__ReduceAction103(fra.me.REG[0]);
   parser___ReduceAction103___init(fra.me.REG[0], REGB0, init_table);
@@ -86191,13 +86193,13 @@ val_t NEW_ReduceAction104_parser___ReduceAction104___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4664;
+  fra.me.line = 4662;
   fra.me.meth = LOCATE_NEW_ReduceAction104_parser___ReduceAction104___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4664 */
+  /* ./parser//parser.nit:4662 */
   fra.me.REG[0] = NEW_ReduceAction104();
   INIT_ATTRIBUTES__ReduceAction104(fra.me.REG[0]);
   parser___ReduceAction104___init(fra.me.REG[0], REGB0, init_table);
@@ -86307,13 +86309,13 @@ val_t NEW_ReduceAction105_parser___ReduceAction105___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4707;
+  fra.me.line = 4705;
   fra.me.meth = LOCATE_NEW_ReduceAction105_parser___ReduceAction105___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4707 */
+  /* ./parser//parser.nit:4705 */
   fra.me.REG[0] = NEW_ReduceAction105();
   INIT_ATTRIBUTES__ReduceAction105(fra.me.REG[0]);
   parser___ReduceAction105___init(fra.me.REG[0], REGB0, init_table);
@@ -86423,13 +86425,13 @@ val_t NEW_ReduceAction106_parser___ReduceAction106___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4753;
+  fra.me.line = 4751;
   fra.me.meth = LOCATE_NEW_ReduceAction106_parser___ReduceAction106___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4753 */
+  /* ./parser//parser.nit:4751 */
   fra.me.REG[0] = NEW_ReduceAction106();
   INIT_ATTRIBUTES__ReduceAction106(fra.me.REG[0]);
   parser___ReduceAction106___init(fra.me.REG[0], REGB0, init_table);
@@ -86539,13 +86541,13 @@ val_t NEW_ReduceAction107_parser___ReduceAction107___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4799;
+  fra.me.line = 4797;
   fra.me.meth = LOCATE_NEW_ReduceAction107_parser___ReduceAction107___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4799 */
+  /* ./parser//parser.nit:4797 */
   fra.me.REG[0] = NEW_ReduceAction107();
   INIT_ATTRIBUTES__ReduceAction107(fra.me.REG[0]);
   parser___ReduceAction107___init(fra.me.REG[0], REGB0, init_table);
@@ -86655,13 +86657,13 @@ val_t NEW_ReduceAction108_parser___ReduceAction108___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4848;
+  fra.me.line = 4846;
   fra.me.meth = LOCATE_NEW_ReduceAction108_parser___ReduceAction108___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4848 */
+  /* ./parser//parser.nit:4846 */
   fra.me.REG[0] = NEW_ReduceAction108();
   INIT_ATTRIBUTES__ReduceAction108(fra.me.REG[0]);
   parser___ReduceAction108___init(fra.me.REG[0], REGB0, init_table);
@@ -86771,13 +86773,13 @@ val_t NEW_ReduceAction109_parser___ReduceAction109___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4894;
+  fra.me.line = 4892;
   fra.me.meth = LOCATE_NEW_ReduceAction109_parser___ReduceAction109___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4894 */
+  /* ./parser//parser.nit:4892 */
   fra.me.REG[0] = NEW_ReduceAction109();
   INIT_ATTRIBUTES__ReduceAction109(fra.me.REG[0]);
   parser___ReduceAction109___init(fra.me.REG[0], REGB0, init_table);
@@ -86887,13 +86889,13 @@ val_t NEW_ReduceAction110_parser___ReduceAction110___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4943;
+  fra.me.line = 4941;
   fra.me.meth = LOCATE_NEW_ReduceAction110_parser___ReduceAction110___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4943 */
+  /* ./parser//parser.nit:4941 */
   fra.me.REG[0] = NEW_ReduceAction110();
   INIT_ATTRIBUTES__ReduceAction110(fra.me.REG[0]);
   parser___ReduceAction110___init(fra.me.REG[0], REGB0, init_table);
@@ -87003,13 +87005,13 @@ val_t NEW_ReduceAction111_parser___ReduceAction111___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 4992;
+  fra.me.line = 4990;
   fra.me.meth = LOCATE_NEW_ReduceAction111_parser___ReduceAction111___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:4992 */
+  /* ./parser//parser.nit:4990 */
   fra.me.REG[0] = NEW_ReduceAction111();
   INIT_ATTRIBUTES__ReduceAction111(fra.me.REG[0]);
   parser___ReduceAction111___init(fra.me.REG[0], REGB0, init_table);
@@ -87119,13 +87121,13 @@ val_t NEW_ReduceAction112_parser___ReduceAction112___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5044;
+  fra.me.line = 5042;
   fra.me.meth = LOCATE_NEW_ReduceAction112_parser___ReduceAction112___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5044 */
+  /* ./parser//parser.nit:5042 */
   fra.me.REG[0] = NEW_ReduceAction112();
   INIT_ATTRIBUTES__ReduceAction112(fra.me.REG[0]);
   parser___ReduceAction112___init(fra.me.REG[0], REGB0, init_table);
@@ -87235,13 +87237,13 @@ val_t NEW_ReduceAction113_parser___ReduceAction113___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5079;
+  fra.me.line = 5077;
   fra.me.meth = LOCATE_NEW_ReduceAction113_parser___ReduceAction113___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5079 */
+  /* ./parser//parser.nit:5077 */
   fra.me.REG[0] = NEW_ReduceAction113();
   INIT_ATTRIBUTES__ReduceAction113(fra.me.REG[0]);
   parser___ReduceAction113___init(fra.me.REG[0], REGB0, init_table);
@@ -87351,13 +87353,13 @@ val_t NEW_ReduceAction114_parser___ReduceAction114___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5117;
+  fra.me.line = 5115;
   fra.me.meth = LOCATE_NEW_ReduceAction114_parser___ReduceAction114___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5117 */
+  /* ./parser//parser.nit:5115 */
   fra.me.REG[0] = NEW_ReduceAction114();
   INIT_ATTRIBUTES__ReduceAction114(fra.me.REG[0]);
   parser___ReduceAction114___init(fra.me.REG[0], REGB0, init_table);
@@ -87467,13 +87469,13 @@ val_t NEW_ReduceAction115_parser___ReduceAction115___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5155;
+  fra.me.line = 5153;
   fra.me.meth = LOCATE_NEW_ReduceAction115_parser___ReduceAction115___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5155 */
+  /* ./parser//parser.nit:5153 */
   fra.me.REG[0] = NEW_ReduceAction115();
   INIT_ATTRIBUTES__ReduceAction115(fra.me.REG[0]);
   parser___ReduceAction115___init(fra.me.REG[0], REGB0, init_table);
@@ -87583,13 +87585,13 @@ val_t NEW_ReduceAction116_parser___ReduceAction116___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5196;
+  fra.me.line = 5194;
   fra.me.meth = LOCATE_NEW_ReduceAction116_parser___ReduceAction116___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5196 */
+  /* ./parser//parser.nit:5194 */
   fra.me.REG[0] = NEW_ReduceAction116();
   INIT_ATTRIBUTES__ReduceAction116(fra.me.REG[0]);
   parser___ReduceAction116___init(fra.me.REG[0], REGB0, init_table);
@@ -87699,13 +87701,13 @@ val_t NEW_ReduceAction117_parser___ReduceAction117___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5234;
+  fra.me.line = 5232;
   fra.me.meth = LOCATE_NEW_ReduceAction117_parser___ReduceAction117___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5234 */
+  /* ./parser//parser.nit:5232 */
   fra.me.REG[0] = NEW_ReduceAction117();
   INIT_ATTRIBUTES__ReduceAction117(fra.me.REG[0]);
   parser___ReduceAction117___init(fra.me.REG[0], REGB0, init_table);
@@ -87815,13 +87817,13 @@ val_t NEW_ReduceAction118_parser___ReduceAction118___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5275;
+  fra.me.line = 5273;
   fra.me.meth = LOCATE_NEW_ReduceAction118_parser___ReduceAction118___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5275 */
+  /* ./parser//parser.nit:5273 */
   fra.me.REG[0] = NEW_ReduceAction118();
   INIT_ATTRIBUTES__ReduceAction118(fra.me.REG[0]);
   parser___ReduceAction118___init(fra.me.REG[0], REGB0, init_table);
@@ -87931,13 +87933,13 @@ val_t NEW_ReduceAction119_parser___ReduceAction119___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5316;
+  fra.me.line = 5314;
   fra.me.meth = LOCATE_NEW_ReduceAction119_parser___ReduceAction119___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5316 */
+  /* ./parser//parser.nit:5314 */
   fra.me.REG[0] = NEW_ReduceAction119();
   INIT_ATTRIBUTES__ReduceAction119(fra.me.REG[0]);
   parser___ReduceAction119___init(fra.me.REG[0], REGB0, init_table);
@@ -88047,13 +88049,13 @@ val_t NEW_ReduceAction120_parser___ReduceAction120___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5360;
+  fra.me.line = 5358;
   fra.me.meth = LOCATE_NEW_ReduceAction120_parser___ReduceAction120___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5360 */
+  /* ./parser//parser.nit:5358 */
   fra.me.REG[0] = NEW_ReduceAction120();
   INIT_ATTRIBUTES__ReduceAction120(fra.me.REG[0]);
   parser___ReduceAction120___init(fra.me.REG[0], REGB0, init_table);
@@ -88163,13 +88165,13 @@ val_t NEW_ReduceAction121_parser___ReduceAction121___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5400;
+  fra.me.line = 5398;
   fra.me.meth = LOCATE_NEW_ReduceAction121_parser___ReduceAction121___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5400 */
+  /* ./parser//parser.nit:5398 */
   fra.me.REG[0] = NEW_ReduceAction121();
   INIT_ATTRIBUTES__ReduceAction121(fra.me.REG[0]);
   parser___ReduceAction121___init(fra.me.REG[0], REGB0, init_table);
@@ -88279,13 +88281,13 @@ val_t NEW_ReduceAction122_parser___ReduceAction122___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5443;
+  fra.me.line = 5441;
   fra.me.meth = LOCATE_NEW_ReduceAction122_parser___ReduceAction122___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5443 */
+  /* ./parser//parser.nit:5441 */
   fra.me.REG[0] = NEW_ReduceAction122();
   INIT_ATTRIBUTES__ReduceAction122(fra.me.REG[0]);
   parser___ReduceAction122___init(fra.me.REG[0], REGB0, init_table);
@@ -88395,13 +88397,13 @@ val_t NEW_ReduceAction123_parser___ReduceAction123___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5486;
+  fra.me.line = 5484;
   fra.me.meth = LOCATE_NEW_ReduceAction123_parser___ReduceAction123___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5486 */
+  /* ./parser//parser.nit:5484 */
   fra.me.REG[0] = NEW_ReduceAction123();
   INIT_ATTRIBUTES__ReduceAction123(fra.me.REG[0]);
   parser___ReduceAction123___init(fra.me.REG[0], REGB0, init_table);
@@ -88511,13 +88513,13 @@ val_t NEW_ReduceAction124_parser___ReduceAction124___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5532;
+  fra.me.line = 5530;
   fra.me.meth = LOCATE_NEW_ReduceAction124_parser___ReduceAction124___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5532 */
+  /* ./parser//parser.nit:5530 */
   fra.me.REG[0] = NEW_ReduceAction124();
   INIT_ATTRIBUTES__ReduceAction124(fra.me.REG[0]);
   parser___ReduceAction124___init(fra.me.REG[0], REGB0, init_table);
@@ -88627,13 +88629,13 @@ val_t NEW_ReduceAction125_parser___ReduceAction125___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5575;
+  fra.me.line = 5573;
   fra.me.meth = LOCATE_NEW_ReduceAction125_parser___ReduceAction125___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5575 */
+  /* ./parser//parser.nit:5573 */
   fra.me.REG[0] = NEW_ReduceAction125();
   INIT_ATTRIBUTES__ReduceAction125(fra.me.REG[0]);
   parser___ReduceAction125___init(fra.me.REG[0], REGB0, init_table);
@@ -88743,13 +88745,13 @@ val_t NEW_ReduceAction126_parser___ReduceAction126___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5621;
+  fra.me.line = 5619;
   fra.me.meth = LOCATE_NEW_ReduceAction126_parser___ReduceAction126___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5621 */
+  /* ./parser//parser.nit:5619 */
   fra.me.REG[0] = NEW_ReduceAction126();
   INIT_ATTRIBUTES__ReduceAction126(fra.me.REG[0]);
   parser___ReduceAction126___init(fra.me.REG[0], REGB0, init_table);
@@ -88859,13 +88861,13 @@ val_t NEW_ReduceAction127_parser___ReduceAction127___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5667;
+  fra.me.line = 5665;
   fra.me.meth = LOCATE_NEW_ReduceAction127_parser___ReduceAction127___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5667 */
+  /* ./parser//parser.nit:5665 */
   fra.me.REG[0] = NEW_ReduceAction127();
   INIT_ATTRIBUTES__ReduceAction127(fra.me.REG[0]);
   parser___ReduceAction127___init(fra.me.REG[0], REGB0, init_table);
@@ -88975,13 +88977,13 @@ val_t NEW_ReduceAction128_parser___ReduceAction128___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5716;
+  fra.me.line = 5714;
   fra.me.meth = LOCATE_NEW_ReduceAction128_parser___ReduceAction128___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5716 */
+  /* ./parser//parser.nit:5714 */
   fra.me.REG[0] = NEW_ReduceAction128();
   INIT_ATTRIBUTES__ReduceAction128(fra.me.REG[0]);
   parser___ReduceAction128___init(fra.me.REG[0], REGB0, init_table);
@@ -89091,13 +89093,13 @@ val_t NEW_ReduceAction129_parser___ReduceAction129___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5752;
+  fra.me.line = 5750;
   fra.me.meth = LOCATE_NEW_ReduceAction129_parser___ReduceAction129___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5752 */
+  /* ./parser//parser.nit:5750 */
   fra.me.REG[0] = NEW_ReduceAction129();
   INIT_ATTRIBUTES__ReduceAction129(fra.me.REG[0]);
   parser___ReduceAction129___init(fra.me.REG[0], REGB0, init_table);
@@ -89207,13 +89209,13 @@ val_t NEW_ReduceAction130_parser___ReduceAction130___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5791;
+  fra.me.line = 5789;
   fra.me.meth = LOCATE_NEW_ReduceAction130_parser___ReduceAction130___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5791 */
+  /* ./parser//parser.nit:5789 */
   fra.me.REG[0] = NEW_ReduceAction130();
   INIT_ATTRIBUTES__ReduceAction130(fra.me.REG[0]);
   parser___ReduceAction130___init(fra.me.REG[0], REGB0, init_table);
@@ -89323,13 +89325,13 @@ val_t NEW_ReduceAction131_parser___ReduceAction131___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5830;
+  fra.me.line = 5828;
   fra.me.meth = LOCATE_NEW_ReduceAction131_parser___ReduceAction131___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5830 */
+  /* ./parser//parser.nit:5828 */
   fra.me.REG[0] = NEW_ReduceAction131();
   INIT_ATTRIBUTES__ReduceAction131(fra.me.REG[0]);
   parser___ReduceAction131___init(fra.me.REG[0], REGB0, init_table);
@@ -89439,13 +89441,13 @@ val_t NEW_ReduceAction132_parser___ReduceAction132___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5872;
+  fra.me.line = 5870;
   fra.me.meth = LOCATE_NEW_ReduceAction132_parser___ReduceAction132___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5872 */
+  /* ./parser//parser.nit:5870 */
   fra.me.REG[0] = NEW_ReduceAction132();
   INIT_ATTRIBUTES__ReduceAction132(fra.me.REG[0]);
   parser___ReduceAction132___init(fra.me.REG[0], REGB0, init_table);
@@ -89555,13 +89557,13 @@ val_t NEW_ReduceAction133_parser___ReduceAction133___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5909;
+  fra.me.line = 5907;
   fra.me.meth = LOCATE_NEW_ReduceAction133_parser___ReduceAction133___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5909 */
+  /* ./parser//parser.nit:5907 */
   fra.me.REG[0] = NEW_ReduceAction133();
   INIT_ATTRIBUTES__ReduceAction133(fra.me.REG[0]);
   parser___ReduceAction133___init(fra.me.REG[0], REGB0, init_table);
@@ -89671,13 +89673,13 @@ val_t NEW_ReduceAction134_parser___ReduceAction134___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5949;
+  fra.me.line = 5947;
   fra.me.meth = LOCATE_NEW_ReduceAction134_parser___ReduceAction134___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5949 */
+  /* ./parser//parser.nit:5947 */
   fra.me.REG[0] = NEW_ReduceAction134();
   INIT_ATTRIBUTES__ReduceAction134(fra.me.REG[0]);
   parser___ReduceAction134___init(fra.me.REG[0], REGB0, init_table);
@@ -89787,13 +89789,13 @@ val_t NEW_ReduceAction135_parser___ReduceAction135___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 5989;
+  fra.me.line = 5987;
   fra.me.meth = LOCATE_NEW_ReduceAction135_parser___ReduceAction135___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:5989 */
+  /* ./parser//parser.nit:5987 */
   fra.me.REG[0] = NEW_ReduceAction135();
   INIT_ATTRIBUTES__ReduceAction135(fra.me.REG[0]);
   parser___ReduceAction135___init(fra.me.REG[0], REGB0, init_table);
@@ -89903,13 +89905,13 @@ val_t NEW_ReduceAction136_parser___ReduceAction136___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6032;
+  fra.me.line = 6030;
   fra.me.meth = LOCATE_NEW_ReduceAction136_parser___ReduceAction136___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6032 */
+  /* ./parser//parser.nit:6030 */
   fra.me.REG[0] = NEW_ReduceAction136();
   INIT_ATTRIBUTES__ReduceAction136(fra.me.REG[0]);
   parser___ReduceAction136___init(fra.me.REG[0], REGB0, init_table);
@@ -90019,13 +90021,13 @@ val_t NEW_ReduceAction137_parser___ReduceAction137___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6066;
+  fra.me.line = 6064;
   fra.me.meth = LOCATE_NEW_ReduceAction137_parser___ReduceAction137___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6066 */
+  /* ./parser//parser.nit:6064 */
   fra.me.REG[0] = NEW_ReduceAction137();
   INIT_ATTRIBUTES__ReduceAction137(fra.me.REG[0]);
   parser___ReduceAction137___init(fra.me.REG[0], REGB0, init_table);
@@ -90135,13 +90137,13 @@ val_t NEW_ReduceAction138_parser___ReduceAction138___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6103;
+  fra.me.line = 6101;
   fra.me.meth = LOCATE_NEW_ReduceAction138_parser___ReduceAction138___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6103 */
+  /* ./parser//parser.nit:6101 */
   fra.me.REG[0] = NEW_ReduceAction138();
   INIT_ATTRIBUTES__ReduceAction138(fra.me.REG[0]);
   parser___ReduceAction138___init(fra.me.REG[0], REGB0, init_table);
@@ -90251,13 +90253,13 @@ val_t NEW_ReduceAction139_parser___ReduceAction139___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6121;
+  fra.me.line = 6119;
   fra.me.meth = LOCATE_NEW_ReduceAction139_parser___ReduceAction139___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6121 */
+  /* ./parser//parser.nit:6119 */
   fra.me.REG[0] = NEW_ReduceAction139();
   INIT_ATTRIBUTES__ReduceAction139(fra.me.REG[0]);
   parser___ReduceAction139___init(fra.me.REG[0], REGB0, init_table);
@@ -90367,13 +90369,13 @@ val_t NEW_ReduceAction140_parser___ReduceAction140___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6142;
+  fra.me.line = 6140;
   fra.me.meth = LOCATE_NEW_ReduceAction140_parser___ReduceAction140___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6142 */
+  /* ./parser//parser.nit:6140 */
   fra.me.REG[0] = NEW_ReduceAction140();
   INIT_ATTRIBUTES__ReduceAction140(fra.me.REG[0]);
   parser___ReduceAction140___init(fra.me.REG[0], REGB0, init_table);
@@ -90483,13 +90485,13 @@ val_t NEW_ReduceAction141_parser___ReduceAction141___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6161;
+  fra.me.line = 6159;
   fra.me.meth = LOCATE_NEW_ReduceAction141_parser___ReduceAction141___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6161 */
+  /* ./parser//parser.nit:6159 */
   fra.me.REG[0] = NEW_ReduceAction141();
   INIT_ATTRIBUTES__ReduceAction141(fra.me.REG[0]);
   parser___ReduceAction141___init(fra.me.REG[0], REGB0, init_table);
@@ -90599,13 +90601,13 @@ val_t NEW_ReduceAction142_parser___ReduceAction142___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6183;
+  fra.me.line = 6181;
   fra.me.meth = LOCATE_NEW_ReduceAction142_parser___ReduceAction142___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6183 */
+  /* ./parser//parser.nit:6181 */
   fra.me.REG[0] = NEW_ReduceAction142();
   INIT_ATTRIBUTES__ReduceAction142(fra.me.REG[0]);
   parser___ReduceAction142___init(fra.me.REG[0], REGB0, init_table);
@@ -90715,13 +90717,13 @@ val_t NEW_ReduceAction143_parser___ReduceAction143___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6205;
+  fra.me.line = 6203;
   fra.me.meth = LOCATE_NEW_ReduceAction143_parser___ReduceAction143___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6205 */
+  /* ./parser//parser.nit:6203 */
   fra.me.REG[0] = NEW_ReduceAction143();
   INIT_ATTRIBUTES__ReduceAction143(fra.me.REG[0]);
   parser___ReduceAction143___init(fra.me.REG[0], REGB0, init_table);
@@ -90831,13 +90833,13 @@ val_t NEW_ReduceAction144_parser___ReduceAction144___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6230;
+  fra.me.line = 6228;
   fra.me.meth = LOCATE_NEW_ReduceAction144_parser___ReduceAction144___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6230 */
+  /* ./parser//parser.nit:6228 */
   fra.me.REG[0] = NEW_ReduceAction144();
   INIT_ATTRIBUTES__ReduceAction144(fra.me.REG[0]);
   parser___ReduceAction144___init(fra.me.REG[0], REGB0, init_table);
@@ -90947,13 +90949,13 @@ val_t NEW_ReduceAction145_parser___ReduceAction145___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6243;
+  fra.me.line = 6241;
   fra.me.meth = LOCATE_NEW_ReduceAction145_parser___ReduceAction145___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6243 */
+  /* ./parser//parser.nit:6241 */
   fra.me.REG[0] = NEW_ReduceAction145();
   INIT_ATTRIBUTES__ReduceAction145(fra.me.REG[0]);
   parser___ReduceAction145___init(fra.me.REG[0], REGB0, init_table);
@@ -91063,13 +91065,13 @@ val_t NEW_ReduceAction146_parser___ReduceAction146___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6261;
+  fra.me.line = 6259;
   fra.me.meth = LOCATE_NEW_ReduceAction146_parser___ReduceAction146___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6261 */
+  /* ./parser//parser.nit:6259 */
   fra.me.REG[0] = NEW_ReduceAction146();
   INIT_ATTRIBUTES__ReduceAction146(fra.me.REG[0]);
   parser___ReduceAction146___init(fra.me.REG[0], REGB0, init_table);
@@ -91179,13 +91181,13 @@ val_t NEW_ReduceAction147_parser___ReduceAction147___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6279;
+  fra.me.line = 6277;
   fra.me.meth = LOCATE_NEW_ReduceAction147_parser___ReduceAction147___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6279 */
+  /* ./parser//parser.nit:6277 */
   fra.me.REG[0] = NEW_ReduceAction147();
   INIT_ATTRIBUTES__ReduceAction147(fra.me.REG[0]);
   parser___ReduceAction147___init(fra.me.REG[0], REGB0, init_table);
@@ -91295,13 +91297,13 @@ val_t NEW_ReduceAction148_parser___ReduceAction148___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6297;
+  fra.me.line = 6295;
   fra.me.meth = LOCATE_NEW_ReduceAction148_parser___ReduceAction148___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6297 */
+  /* ./parser//parser.nit:6295 */
   fra.me.REG[0] = NEW_ReduceAction148();
   INIT_ATTRIBUTES__ReduceAction148(fra.me.REG[0]);
   parser___ReduceAction148___init(fra.me.REG[0], REGB0, init_table);
@@ -91411,13 +91413,13 @@ val_t NEW_ReduceAction149_parser___ReduceAction149___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6314;
+  fra.me.line = 6312;
   fra.me.meth = LOCATE_NEW_ReduceAction149_parser___ReduceAction149___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6314 */
+  /* ./parser//parser.nit:6312 */
   fra.me.REG[0] = NEW_ReduceAction149();
   INIT_ATTRIBUTES__ReduceAction149(fra.me.REG[0]);
   parser___ReduceAction149___init(fra.me.REG[0], REGB0, init_table);
@@ -91527,13 +91529,13 @@ val_t NEW_ReduceAction150_parser___ReduceAction150___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6331;
+  fra.me.line = 6329;
   fra.me.meth = LOCATE_NEW_ReduceAction150_parser___ReduceAction150___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6331 */
+  /* ./parser//parser.nit:6329 */
   fra.me.REG[0] = NEW_ReduceAction150();
   INIT_ATTRIBUTES__ReduceAction150(fra.me.REG[0]);
   parser___ReduceAction150___init(fra.me.REG[0], REGB0, init_table);
@@ -91643,13 +91645,13 @@ val_t NEW_ReduceAction151_parser___ReduceAction151___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6348;
+  fra.me.line = 6346;
   fra.me.meth = LOCATE_NEW_ReduceAction151_parser___ReduceAction151___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6348 */
+  /* ./parser//parser.nit:6346 */
   fra.me.REG[0] = NEW_ReduceAction151();
   INIT_ATTRIBUTES__ReduceAction151(fra.me.REG[0]);
   parser___ReduceAction151___init(fra.me.REG[0], REGB0, init_table);
@@ -91759,13 +91761,13 @@ val_t NEW_ReduceAction152_parser___ReduceAction152___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6365;
+  fra.me.line = 6363;
   fra.me.meth = LOCATE_NEW_ReduceAction152_parser___ReduceAction152___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6365 */
+  /* ./parser//parser.nit:6363 */
   fra.me.REG[0] = NEW_ReduceAction152();
   INIT_ATTRIBUTES__ReduceAction152(fra.me.REG[0]);
   parser___ReduceAction152___init(fra.me.REG[0], REGB0, init_table);
@@ -91875,13 +91877,13 @@ val_t NEW_ReduceAction153_parser___ReduceAction153___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6382;
+  fra.me.line = 6380;
   fra.me.meth = LOCATE_NEW_ReduceAction153_parser___ReduceAction153___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6382 */
+  /* ./parser//parser.nit:6380 */
   fra.me.REG[0] = NEW_ReduceAction153();
   INIT_ATTRIBUTES__ReduceAction153(fra.me.REG[0]);
   parser___ReduceAction153___init(fra.me.REG[0], REGB0, init_table);
@@ -91991,13 +91993,13 @@ val_t NEW_ReduceAction154_parser___ReduceAction154___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6399;
+  fra.me.line = 6397;
   fra.me.meth = LOCATE_NEW_ReduceAction154_parser___ReduceAction154___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6399 */
+  /* ./parser//parser.nit:6397 */
   fra.me.REG[0] = NEW_ReduceAction154();
   INIT_ATTRIBUTES__ReduceAction154(fra.me.REG[0]);
   parser___ReduceAction154___init(fra.me.REG[0], REGB0, init_table);
@@ -92107,13 +92109,13 @@ val_t NEW_ReduceAction155_parser___ReduceAction155___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6416;
+  fra.me.line = 6414;
   fra.me.meth = LOCATE_NEW_ReduceAction155_parser___ReduceAction155___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6416 */
+  /* ./parser//parser.nit:6414 */
   fra.me.REG[0] = NEW_ReduceAction155();
   INIT_ATTRIBUTES__ReduceAction155(fra.me.REG[0]);
   parser___ReduceAction155___init(fra.me.REG[0], REGB0, init_table);
@@ -92223,13 +92225,13 @@ val_t NEW_ReduceAction156_parser___ReduceAction156___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6433;
+  fra.me.line = 6431;
   fra.me.meth = LOCATE_NEW_ReduceAction156_parser___ReduceAction156___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6433 */
+  /* ./parser//parser.nit:6431 */
   fra.me.REG[0] = NEW_ReduceAction156();
   INIT_ATTRIBUTES__ReduceAction156(fra.me.REG[0]);
   parser___ReduceAction156___init(fra.me.REG[0], REGB0, init_table);
@@ -92339,13 +92341,13 @@ val_t NEW_ReduceAction157_parser___ReduceAction157___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6450;
+  fra.me.line = 6448;
   fra.me.meth = LOCATE_NEW_ReduceAction157_parser___ReduceAction157___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6450 */
+  /* ./parser//parser.nit:6448 */
   fra.me.REG[0] = NEW_ReduceAction157();
   INIT_ATTRIBUTES__ReduceAction157(fra.me.REG[0]);
   parser___ReduceAction157___init(fra.me.REG[0], REGB0, init_table);
@@ -92455,13 +92457,13 @@ val_t NEW_ReduceAction158_parser___ReduceAction158___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6467;
+  fra.me.line = 6465;
   fra.me.meth = LOCATE_NEW_ReduceAction158_parser___ReduceAction158___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6467 */
+  /* ./parser//parser.nit:6465 */
   fra.me.REG[0] = NEW_ReduceAction158();
   INIT_ATTRIBUTES__ReduceAction158(fra.me.REG[0]);
   parser___ReduceAction158___init(fra.me.REG[0], REGB0, init_table);
@@ -92571,13 +92573,13 @@ val_t NEW_ReduceAction159_parser___ReduceAction159___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6484;
+  fra.me.line = 6482;
   fra.me.meth = LOCATE_NEW_ReduceAction159_parser___ReduceAction159___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6484 */
+  /* ./parser//parser.nit:6482 */
   fra.me.REG[0] = NEW_ReduceAction159();
   INIT_ATTRIBUTES__ReduceAction159(fra.me.REG[0]);
   parser___ReduceAction159___init(fra.me.REG[0], REGB0, init_table);
@@ -92687,13 +92689,13 @@ val_t NEW_ReduceAction160_parser___ReduceAction160___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6501;
+  fra.me.line = 6499;
   fra.me.meth = LOCATE_NEW_ReduceAction160_parser___ReduceAction160___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6501 */
+  /* ./parser//parser.nit:6499 */
   fra.me.REG[0] = NEW_ReduceAction160();
   INIT_ATTRIBUTES__ReduceAction160(fra.me.REG[0]);
   parser___ReduceAction160___init(fra.me.REG[0], REGB0, init_table);
@@ -92803,13 +92805,13 @@ val_t NEW_ReduceAction161_parser___ReduceAction161___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6518;
+  fra.me.line = 6516;
   fra.me.meth = LOCATE_NEW_ReduceAction161_parser___ReduceAction161___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6518 */
+  /* ./parser//parser.nit:6516 */
   fra.me.REG[0] = NEW_ReduceAction161();
   INIT_ATTRIBUTES__ReduceAction161(fra.me.REG[0]);
   parser___ReduceAction161___init(fra.me.REG[0], REGB0, init_table);
@@ -92919,13 +92921,13 @@ val_t NEW_ReduceAction162_parser___ReduceAction162___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6535;
+  fra.me.line = 6533;
   fra.me.meth = LOCATE_NEW_ReduceAction162_parser___ReduceAction162___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6535 */
+  /* ./parser//parser.nit:6533 */
   fra.me.REG[0] = NEW_ReduceAction162();
   INIT_ATTRIBUTES__ReduceAction162(fra.me.REG[0]);
   parser___ReduceAction162___init(fra.me.REG[0], REGB0, init_table);
@@ -93035,13 +93037,13 @@ val_t NEW_ReduceAction163_parser___ReduceAction163___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6556;
+  fra.me.line = 6554;
   fra.me.meth = LOCATE_NEW_ReduceAction163_parser___ReduceAction163___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6556 */
+  /* ./parser//parser.nit:6554 */
   fra.me.REG[0] = NEW_ReduceAction163();
   INIT_ATTRIBUTES__ReduceAction163(fra.me.REG[0]);
   parser___ReduceAction163___init(fra.me.REG[0], REGB0, init_table);
@@ -93151,13 +93153,13 @@ val_t NEW_ReduceAction164_parser___ReduceAction164___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6573;
+  fra.me.line = 6571;
   fra.me.meth = LOCATE_NEW_ReduceAction164_parser___ReduceAction164___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6573 */
+  /* ./parser//parser.nit:6571 */
   fra.me.REG[0] = NEW_ReduceAction164();
   INIT_ATTRIBUTES__ReduceAction164(fra.me.REG[0]);
   parser___ReduceAction164___init(fra.me.REG[0], REGB0, init_table);
@@ -93267,13 +93269,13 @@ val_t NEW_ReduceAction165_parser___ReduceAction165___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6594;
+  fra.me.line = 6592;
   fra.me.meth = LOCATE_NEW_ReduceAction165_parser___ReduceAction165___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6594 */
+  /* ./parser//parser.nit:6592 */
   fra.me.REG[0] = NEW_ReduceAction165();
   INIT_ATTRIBUTES__ReduceAction165(fra.me.REG[0]);
   parser___ReduceAction165___init(fra.me.REG[0], REGB0, init_table);
@@ -93383,13 +93385,13 @@ val_t NEW_ReduceAction166_parser___ReduceAction166___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6619;
+  fra.me.line = 6617;
   fra.me.meth = LOCATE_NEW_ReduceAction166_parser___ReduceAction166___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6619 */
+  /* ./parser//parser.nit:6617 */
   fra.me.REG[0] = NEW_ReduceAction166();
   INIT_ATTRIBUTES__ReduceAction166(fra.me.REG[0]);
   parser___ReduceAction166___init(fra.me.REG[0], REGB0, init_table);
@@ -93499,13 +93501,13 @@ val_t NEW_ReduceAction167_parser___ReduceAction167___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6644;
+  fra.me.line = 6642;
   fra.me.meth = LOCATE_NEW_ReduceAction167_parser___ReduceAction167___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6644 */
+  /* ./parser//parser.nit:6642 */
   fra.me.REG[0] = NEW_ReduceAction167();
   INIT_ATTRIBUTES__ReduceAction167(fra.me.REG[0]);
   parser___ReduceAction167___init(fra.me.REG[0], REGB0, init_table);
@@ -93615,13 +93617,13 @@ val_t NEW_ReduceAction168_parser___ReduceAction168___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6673;
+  fra.me.line = 6671;
   fra.me.meth = LOCATE_NEW_ReduceAction168_parser___ReduceAction168___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6673 */
+  /* ./parser//parser.nit:6671 */
   fra.me.REG[0] = NEW_ReduceAction168();
   INIT_ATTRIBUTES__ReduceAction168(fra.me.REG[0]);
   parser___ReduceAction168___init(fra.me.REG[0], REGB0, init_table);
@@ -93731,13 +93733,13 @@ val_t NEW_ReduceAction169_parser___ReduceAction169___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6695;
+  fra.me.line = 6693;
   fra.me.meth = LOCATE_NEW_ReduceAction169_parser___ReduceAction169___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6695 */
+  /* ./parser//parser.nit:6693 */
   fra.me.REG[0] = NEW_ReduceAction169();
   INIT_ATTRIBUTES__ReduceAction169(fra.me.REG[0]);
   parser___ReduceAction169___init(fra.me.REG[0], REGB0, init_table);
@@ -93847,13 +93849,13 @@ val_t NEW_ReduceAction170_parser___ReduceAction170___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6721;
+  fra.me.line = 6719;
   fra.me.meth = LOCATE_NEW_ReduceAction170_parser___ReduceAction170___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6721 */
+  /* ./parser//parser.nit:6719 */
   fra.me.REG[0] = NEW_ReduceAction170();
   INIT_ATTRIBUTES__ReduceAction170(fra.me.REG[0]);
   parser___ReduceAction170___init(fra.me.REG[0], REGB0, init_table);
@@ -93963,13 +93965,13 @@ val_t NEW_ReduceAction171_parser___ReduceAction171___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6743;
+  fra.me.line = 6741;
   fra.me.meth = LOCATE_NEW_ReduceAction171_parser___ReduceAction171___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6743 */
+  /* ./parser//parser.nit:6741 */
   fra.me.REG[0] = NEW_ReduceAction171();
   INIT_ATTRIBUTES__ReduceAction171(fra.me.REG[0]);
   parser___ReduceAction171___init(fra.me.REG[0], REGB0, init_table);
@@ -94079,13 +94081,13 @@ val_t NEW_ReduceAction172_parser___ReduceAction172___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6769;
+  fra.me.line = 6767;
   fra.me.meth = LOCATE_NEW_ReduceAction172_parser___ReduceAction172___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6769 */
+  /* ./parser//parser.nit:6767 */
   fra.me.REG[0] = NEW_ReduceAction172();
   INIT_ATTRIBUTES__ReduceAction172(fra.me.REG[0]);
   parser___ReduceAction172___init(fra.me.REG[0], REGB0, init_table);
@@ -94195,13 +94197,13 @@ val_t NEW_ReduceAction173_parser___ReduceAction173___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6788;
+  fra.me.line = 6786;
   fra.me.meth = LOCATE_NEW_ReduceAction173_parser___ReduceAction173___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6788 */
+  /* ./parser//parser.nit:6786 */
   fra.me.REG[0] = NEW_ReduceAction173();
   INIT_ATTRIBUTES__ReduceAction173(fra.me.REG[0]);
   parser___ReduceAction173___init(fra.me.REG[0], REGB0, init_table);
@@ -94311,13 +94313,13 @@ val_t NEW_ReduceAction174_parser___ReduceAction174___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6811;
+  fra.me.line = 6809;
   fra.me.meth = LOCATE_NEW_ReduceAction174_parser___ReduceAction174___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6811 */
+  /* ./parser//parser.nit:6809 */
   fra.me.REG[0] = NEW_ReduceAction174();
   INIT_ATTRIBUTES__ReduceAction174(fra.me.REG[0]);
   parser___ReduceAction174___init(fra.me.REG[0], REGB0, init_table);
@@ -94427,13 +94429,13 @@ val_t NEW_ReduceAction175_parser___ReduceAction175___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6829;
+  fra.me.line = 6827;
   fra.me.meth = LOCATE_NEW_ReduceAction175_parser___ReduceAction175___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6829 */
+  /* ./parser//parser.nit:6827 */
   fra.me.REG[0] = NEW_ReduceAction175();
   INIT_ATTRIBUTES__ReduceAction175(fra.me.REG[0]);
   parser___ReduceAction175___init(fra.me.REG[0], REGB0, init_table);
@@ -94543,13 +94545,13 @@ val_t NEW_ReduceAction176_parser___ReduceAction176___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6851;
+  fra.me.line = 6849;
   fra.me.meth = LOCATE_NEW_ReduceAction176_parser___ReduceAction176___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6851 */
+  /* ./parser//parser.nit:6849 */
   fra.me.REG[0] = NEW_ReduceAction176();
   INIT_ATTRIBUTES__ReduceAction176(fra.me.REG[0]);
   parser___ReduceAction176___init(fra.me.REG[0], REGB0, init_table);
@@ -94659,13 +94661,13 @@ val_t NEW_ReduceAction177_parser___ReduceAction177___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6872;
+  fra.me.line = 6870;
   fra.me.meth = LOCATE_NEW_ReduceAction177_parser___ReduceAction177___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6872 */
+  /* ./parser//parser.nit:6870 */
   fra.me.REG[0] = NEW_ReduceAction177();
   INIT_ATTRIBUTES__ReduceAction177(fra.me.REG[0]);
   parser___ReduceAction177___init(fra.me.REG[0], REGB0, init_table);
@@ -94775,13 +94777,13 @@ val_t NEW_ReduceAction178_parser___ReduceAction178___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6897;
+  fra.me.line = 6895;
   fra.me.meth = LOCATE_NEW_ReduceAction178_parser___ReduceAction178___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6897 */
+  /* ./parser//parser.nit:6895 */
   fra.me.REG[0] = NEW_ReduceAction178();
   INIT_ATTRIBUTES__ReduceAction178(fra.me.REG[0]);
   parser___ReduceAction178___init(fra.me.REG[0], REGB0, init_table);
@@ -94891,13 +94893,13 @@ val_t NEW_ReduceAction179_parser___ReduceAction179___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6918;
+  fra.me.line = 6916;
   fra.me.meth = LOCATE_NEW_ReduceAction179_parser___ReduceAction179___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6918 */
+  /* ./parser//parser.nit:6916 */
   fra.me.REG[0] = NEW_ReduceAction179();
   INIT_ATTRIBUTES__ReduceAction179(fra.me.REG[0]);
   parser___ReduceAction179___init(fra.me.REG[0], REGB0, init_table);
@@ -95007,13 +95009,13 @@ val_t NEW_ReduceAction180_parser___ReduceAction180___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6943;
+  fra.me.line = 6941;
   fra.me.meth = LOCATE_NEW_ReduceAction180_parser___ReduceAction180___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6943 */
+  /* ./parser//parser.nit:6941 */
   fra.me.REG[0] = NEW_ReduceAction180();
   INIT_ATTRIBUTES__ReduceAction180(fra.me.REG[0]);
   parser___ReduceAction180___init(fra.me.REG[0], REGB0, init_table);
@@ -95123,13 +95125,13 @@ val_t NEW_ReduceAction181_parser___ReduceAction181___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6958;
+  fra.me.line = 6956;
   fra.me.meth = LOCATE_NEW_ReduceAction181_parser___ReduceAction181___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6958 */
+  /* ./parser//parser.nit:6956 */
   fra.me.REG[0] = NEW_ReduceAction181();
   INIT_ATTRIBUTES__ReduceAction181(fra.me.REG[0]);
   parser___ReduceAction181___init(fra.me.REG[0], REGB0, init_table);
@@ -95239,13 +95241,13 @@ val_t NEW_ReduceAction182_parser___ReduceAction182___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6973;
+  fra.me.line = 6971;
   fra.me.meth = LOCATE_NEW_ReduceAction182_parser___ReduceAction182___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6973 */
+  /* ./parser//parser.nit:6971 */
   fra.me.REG[0] = NEW_ReduceAction182();
   INIT_ATTRIBUTES__ReduceAction182(fra.me.REG[0]);
   parser___ReduceAction182___init(fra.me.REG[0], REGB0, init_table);
@@ -95355,13 +95357,13 @@ val_t NEW_ReduceAction183_parser___ReduceAction183___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 6992;
+  fra.me.line = 6990;
   fra.me.meth = LOCATE_NEW_ReduceAction183_parser___ReduceAction183___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:6992 */
+  /* ./parser//parser.nit:6990 */
   fra.me.REG[0] = NEW_ReduceAction183();
   INIT_ATTRIBUTES__ReduceAction183(fra.me.REG[0]);
   parser___ReduceAction183___init(fra.me.REG[0], REGB0, init_table);
@@ -95471,13 +95473,13 @@ val_t NEW_ReduceAction184_parser___ReduceAction184___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7014;
+  fra.me.line = 7012;
   fra.me.meth = LOCATE_NEW_ReduceAction184_parser___ReduceAction184___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7014 */
+  /* ./parser//parser.nit:7012 */
   fra.me.REG[0] = NEW_ReduceAction184();
   INIT_ATTRIBUTES__ReduceAction184(fra.me.REG[0]);
   parser___ReduceAction184___init(fra.me.REG[0], REGB0, init_table);
@@ -95587,13 +95589,13 @@ val_t NEW_ReduceAction185_parser___ReduceAction185___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7039;
+  fra.me.line = 7037;
   fra.me.meth = LOCATE_NEW_ReduceAction185_parser___ReduceAction185___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7039 */
+  /* ./parser//parser.nit:7037 */
   fra.me.REG[0] = NEW_ReduceAction185();
   INIT_ATTRIBUTES__ReduceAction185(fra.me.REG[0]);
   parser___ReduceAction185___init(fra.me.REG[0], REGB0, init_table);
@@ -95703,13 +95705,13 @@ val_t NEW_ReduceAction186_parser___ReduceAction186___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7056;
+  fra.me.line = 7054;
   fra.me.meth = LOCATE_NEW_ReduceAction186_parser___ReduceAction186___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7056 */
+  /* ./parser//parser.nit:7054 */
   fra.me.REG[0] = NEW_ReduceAction186();
   INIT_ATTRIBUTES__ReduceAction186(fra.me.REG[0]);
   parser___ReduceAction186___init(fra.me.REG[0], REGB0, init_table);
@@ -95819,13 +95821,13 @@ val_t NEW_ReduceAction187_parser___ReduceAction187___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7084;
+  fra.me.line = 7082;
   fra.me.meth = LOCATE_NEW_ReduceAction187_parser___ReduceAction187___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7084 */
+  /* ./parser//parser.nit:7082 */
   fra.me.REG[0] = NEW_ReduceAction187();
   INIT_ATTRIBUTES__ReduceAction187(fra.me.REG[0]);
   parser___ReduceAction187___init(fra.me.REG[0], REGB0, init_table);
@@ -95935,13 +95937,13 @@ val_t NEW_ReduceAction188_parser___ReduceAction188___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7115;
+  fra.me.line = 7113;
   fra.me.meth = LOCATE_NEW_ReduceAction188_parser___ReduceAction188___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7115 */
+  /* ./parser//parser.nit:7113 */
   fra.me.REG[0] = NEW_ReduceAction188();
   INIT_ATTRIBUTES__ReduceAction188(fra.me.REG[0]);
   parser___ReduceAction188___init(fra.me.REG[0], REGB0, init_table);
@@ -96051,13 +96053,13 @@ val_t NEW_ReduceAction189_parser___ReduceAction189___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7147;
+  fra.me.line = 7145;
   fra.me.meth = LOCATE_NEW_ReduceAction189_parser___ReduceAction189___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7147 */
+  /* ./parser//parser.nit:7145 */
   fra.me.REG[0] = NEW_ReduceAction189();
   INIT_ATTRIBUTES__ReduceAction189(fra.me.REG[0]);
   parser___ReduceAction189___init(fra.me.REG[0], REGB0, init_table);
@@ -96167,13 +96169,13 @@ val_t NEW_ReduceAction190_parser___ReduceAction190___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7182;
+  fra.me.line = 7180;
   fra.me.meth = LOCATE_NEW_ReduceAction190_parser___ReduceAction190___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7182 */
+  /* ./parser//parser.nit:7180 */
   fra.me.REG[0] = NEW_ReduceAction190();
   INIT_ATTRIBUTES__ReduceAction190(fra.me.REG[0]);
   parser___ReduceAction190___init(fra.me.REG[0], REGB0, init_table);
@@ -96283,13 +96285,13 @@ val_t NEW_ReduceAction191_parser___ReduceAction191___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7215;
+  fra.me.line = 7213;
   fra.me.meth = LOCATE_NEW_ReduceAction191_parser___ReduceAction191___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7215 */
+  /* ./parser//parser.nit:7213 */
   fra.me.REG[0] = NEW_ReduceAction191();
   INIT_ATTRIBUTES__ReduceAction191(fra.me.REG[0]);
   parser___ReduceAction191___init(fra.me.REG[0], REGB0, init_table);
@@ -96399,13 +96401,13 @@ val_t NEW_ReduceAction192_parser___ReduceAction192___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7251;
+  fra.me.line = 7249;
   fra.me.meth = LOCATE_NEW_ReduceAction192_parser___ReduceAction192___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7251 */
+  /* ./parser//parser.nit:7249 */
   fra.me.REG[0] = NEW_ReduceAction192();
   INIT_ATTRIBUTES__ReduceAction192(fra.me.REG[0]);
   parser___ReduceAction192___init(fra.me.REG[0], REGB0, init_table);
@@ -96515,13 +96517,13 @@ val_t NEW_ReduceAction193_parser___ReduceAction193___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7269;
+  fra.me.line = 7267;
   fra.me.meth = LOCATE_NEW_ReduceAction193_parser___ReduceAction193___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7269 */
+  /* ./parser//parser.nit:7267 */
   fra.me.REG[0] = NEW_ReduceAction193();
   INIT_ATTRIBUTES__ReduceAction193(fra.me.REG[0]);
   parser___ReduceAction193___init(fra.me.REG[0], REGB0, init_table);
@@ -96631,13 +96633,13 @@ val_t NEW_ReduceAction194_parser___ReduceAction194___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7289;
+  fra.me.line = 7287;
   fra.me.meth = LOCATE_NEW_ReduceAction194_parser___ReduceAction194___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7289 */
+  /* ./parser//parser.nit:7287 */
   fra.me.REG[0] = NEW_ReduceAction194();
   INIT_ATTRIBUTES__ReduceAction194(fra.me.REG[0]);
   parser___ReduceAction194___init(fra.me.REG[0], REGB0, init_table);
@@ -96747,13 +96749,13 @@ val_t NEW_ReduceAction195_parser___ReduceAction195___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7312;
+  fra.me.line = 7310;
   fra.me.meth = LOCATE_NEW_ReduceAction195_parser___ReduceAction195___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7312 */
+  /* ./parser//parser.nit:7310 */
   fra.me.REG[0] = NEW_ReduceAction195();
   INIT_ATTRIBUTES__ReduceAction195(fra.me.REG[0]);
   parser___ReduceAction195___init(fra.me.REG[0], REGB0, init_table);
@@ -96863,13 +96865,13 @@ val_t NEW_ReduceAction196_parser___ReduceAction196___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7340;
+  fra.me.line = 7338;
   fra.me.meth = LOCATE_NEW_ReduceAction196_parser___ReduceAction196___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7340 */
+  /* ./parser//parser.nit:7338 */
   fra.me.REG[0] = NEW_ReduceAction196();
   INIT_ATTRIBUTES__ReduceAction196(fra.me.REG[0]);
   parser___ReduceAction196___init(fra.me.REG[0], REGB0, init_table);
@@ -96979,13 +96981,13 @@ val_t NEW_ReduceAction197_parser___ReduceAction197___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7371;
+  fra.me.line = 7369;
   fra.me.meth = LOCATE_NEW_ReduceAction197_parser___ReduceAction197___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7371 */
+  /* ./parser//parser.nit:7369 */
   fra.me.REG[0] = NEW_ReduceAction197();
   INIT_ATTRIBUTES__ReduceAction197(fra.me.REG[0]);
   parser___ReduceAction197___init(fra.me.REG[0], REGB0, init_table);
@@ -97095,13 +97097,13 @@ val_t NEW_ReduceAction198_parser___ReduceAction198___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7388;
+  fra.me.line = 7386;
   fra.me.meth = LOCATE_NEW_ReduceAction198_parser___ReduceAction198___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7388 */
+  /* ./parser//parser.nit:7386 */
   fra.me.REG[0] = NEW_ReduceAction198();
   INIT_ATTRIBUTES__ReduceAction198(fra.me.REG[0]);
   parser___ReduceAction198___init(fra.me.REG[0], REGB0, init_table);
@@ -97211,13 +97213,13 @@ val_t NEW_ReduceAction199_parser___ReduceAction199___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7409;
+  fra.me.line = 7407;
   fra.me.meth = LOCATE_NEW_ReduceAction199_parser___ReduceAction199___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7409 */
+  /* ./parser//parser.nit:7407 */
   fra.me.REG[0] = NEW_ReduceAction199();
   INIT_ATTRIBUTES__ReduceAction199(fra.me.REG[0]);
   parser___ReduceAction199___init(fra.me.REG[0], REGB0, init_table);
@@ -97327,13 +97329,13 @@ val_t NEW_ReduceAction200_parser___ReduceAction200___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7424;
+  fra.me.line = 7422;
   fra.me.meth = LOCATE_NEW_ReduceAction200_parser___ReduceAction200___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7424 */
+  /* ./parser//parser.nit:7422 */
   fra.me.REG[0] = NEW_ReduceAction200();
   INIT_ATTRIBUTES__ReduceAction200(fra.me.REG[0]);
   parser___ReduceAction200___init(fra.me.REG[0], REGB0, init_table);
@@ -97443,13 +97445,13 @@ val_t NEW_ReduceAction202_parser___ReduceAction202___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7439;
+  fra.me.line = 7437;
   fra.me.meth = LOCATE_NEW_ReduceAction202_parser___ReduceAction202___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7439 */
+  /* ./parser//parser.nit:7437 */
   fra.me.REG[0] = NEW_ReduceAction202();
   INIT_ATTRIBUTES__ReduceAction202(fra.me.REG[0]);
   parser___ReduceAction202___init(fra.me.REG[0], REGB0, init_table);
@@ -97559,13 +97561,13 @@ val_t NEW_ReduceAction203_parser___ReduceAction203___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7456;
+  fra.me.line = 7454;
   fra.me.meth = LOCATE_NEW_ReduceAction203_parser___ReduceAction203___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7456 */
+  /* ./parser//parser.nit:7454 */
   fra.me.REG[0] = NEW_ReduceAction203();
   INIT_ATTRIBUTES__ReduceAction203(fra.me.REG[0]);
   parser___ReduceAction203___init(fra.me.REG[0], REGB0, init_table);
@@ -97675,13 +97677,13 @@ val_t NEW_ReduceAction204_parser___ReduceAction204___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7472;
+  fra.me.line = 7470;
   fra.me.meth = LOCATE_NEW_ReduceAction204_parser___ReduceAction204___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7472 */
+  /* ./parser//parser.nit:7470 */
   fra.me.REG[0] = NEW_ReduceAction204();
   INIT_ATTRIBUTES__ReduceAction204(fra.me.REG[0]);
   parser___ReduceAction204___init(fra.me.REG[0], REGB0, init_table);
@@ -97791,13 +97793,13 @@ val_t NEW_ReduceAction205_parser___ReduceAction205___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7485;
+  fra.me.line = 7483;
   fra.me.meth = LOCATE_NEW_ReduceAction205_parser___ReduceAction205___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7485 */
+  /* ./parser//parser.nit:7483 */
   fra.me.REG[0] = NEW_ReduceAction205();
   INIT_ATTRIBUTES__ReduceAction205(fra.me.REG[0]);
   parser___ReduceAction205___init(fra.me.REG[0], REGB0, init_table);
@@ -97907,13 +97909,13 @@ val_t NEW_ReduceAction206_parser___ReduceAction206___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7506;
+  fra.me.line = 7504;
   fra.me.meth = LOCATE_NEW_ReduceAction206_parser___ReduceAction206___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7506 */
+  /* ./parser//parser.nit:7504 */
   fra.me.REG[0] = NEW_ReduceAction206();
   INIT_ATTRIBUTES__ReduceAction206(fra.me.REG[0]);
   parser___ReduceAction206___init(fra.me.REG[0], REGB0, init_table);
@@ -98023,13 +98025,13 @@ val_t NEW_ReduceAction207_parser___ReduceAction207___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7531;
+  fra.me.line = 7529;
   fra.me.meth = LOCATE_NEW_ReduceAction207_parser___ReduceAction207___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7531 */
+  /* ./parser//parser.nit:7529 */
   fra.me.REG[0] = NEW_ReduceAction207();
   INIT_ATTRIBUTES__ReduceAction207(fra.me.REG[0]);
   parser___ReduceAction207___init(fra.me.REG[0], REGB0, init_table);
@@ -98139,13 +98141,13 @@ val_t NEW_ReduceAction208_parser___ReduceAction208___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7553;
+  fra.me.line = 7551;
   fra.me.meth = LOCATE_NEW_ReduceAction208_parser___ReduceAction208___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7553 */
+  /* ./parser//parser.nit:7551 */
   fra.me.REG[0] = NEW_ReduceAction208();
   INIT_ATTRIBUTES__ReduceAction208(fra.me.REG[0]);
   parser___ReduceAction208___init(fra.me.REG[0], REGB0, init_table);
@@ -98255,13 +98257,13 @@ val_t NEW_ReduceAction209_parser___ReduceAction209___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7579;
+  fra.me.line = 7577;
   fra.me.meth = LOCATE_NEW_ReduceAction209_parser___ReduceAction209___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7579 */
+  /* ./parser//parser.nit:7577 */
   fra.me.REG[0] = NEW_ReduceAction209();
   INIT_ATTRIBUTES__ReduceAction209(fra.me.REG[0]);
   parser___ReduceAction209___init(fra.me.REG[0], REGB0, init_table);
@@ -98371,13 +98373,13 @@ val_t NEW_ReduceAction210_parser___ReduceAction210___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7593;
+  fra.me.line = 7591;
   fra.me.meth = LOCATE_NEW_ReduceAction210_parser___ReduceAction210___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7593 */
+  /* ./parser//parser.nit:7591 */
   fra.me.REG[0] = NEW_ReduceAction210();
   INIT_ATTRIBUTES__ReduceAction210(fra.me.REG[0]);
   parser___ReduceAction210___init(fra.me.REG[0], REGB0, init_table);
@@ -98487,13 +98489,13 @@ val_t NEW_ReduceAction213_parser___ReduceAction213___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7611;
+  fra.me.line = 7609;
   fra.me.meth = LOCATE_NEW_ReduceAction213_parser___ReduceAction213___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7611 */
+  /* ./parser//parser.nit:7609 */
   fra.me.REG[0] = NEW_ReduceAction213();
   INIT_ATTRIBUTES__ReduceAction213(fra.me.REG[0]);
   parser___ReduceAction213___init(fra.me.REG[0], REGB0, init_table);
@@ -98603,13 +98605,13 @@ val_t NEW_ReduceAction214_parser___ReduceAction214___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7632;
+  fra.me.line = 7630;
   fra.me.meth = LOCATE_NEW_ReduceAction214_parser___ReduceAction214___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7632 */
+  /* ./parser//parser.nit:7630 */
   fra.me.REG[0] = NEW_ReduceAction214();
   INIT_ATTRIBUTES__ReduceAction214(fra.me.REG[0]);
   parser___ReduceAction214___init(fra.me.REG[0], REGB0, init_table);
@@ -98719,13 +98721,13 @@ val_t NEW_ReduceAction215_parser___ReduceAction215___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7651;
+  fra.me.line = 7649;
   fra.me.meth = LOCATE_NEW_ReduceAction215_parser___ReduceAction215___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7651 */
+  /* ./parser//parser.nit:7649 */
   fra.me.REG[0] = NEW_ReduceAction215();
   INIT_ATTRIBUTES__ReduceAction215(fra.me.REG[0]);
   parser___ReduceAction215___init(fra.me.REG[0], REGB0, init_table);
@@ -98835,13 +98837,13 @@ val_t NEW_ReduceAction216_parser___ReduceAction216___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7673;
+  fra.me.line = 7671;
   fra.me.meth = LOCATE_NEW_ReduceAction216_parser___ReduceAction216___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7673 */
+  /* ./parser//parser.nit:7671 */
   fra.me.REG[0] = NEW_ReduceAction216();
   INIT_ATTRIBUTES__ReduceAction216(fra.me.REG[0]);
   parser___ReduceAction216___init(fra.me.REG[0], REGB0, init_table);
@@ -98951,13 +98953,13 @@ val_t NEW_ReduceAction217_parser___ReduceAction217___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7695;
+  fra.me.line = 7693;
   fra.me.meth = LOCATE_NEW_ReduceAction217_parser___ReduceAction217___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7695 */
+  /* ./parser//parser.nit:7693 */
   fra.me.REG[0] = NEW_ReduceAction217();
   INIT_ATTRIBUTES__ReduceAction217(fra.me.REG[0]);
   parser___ReduceAction217___init(fra.me.REG[0], REGB0, init_table);
@@ -99067,13 +99069,13 @@ val_t NEW_ReduceAction218_parser___ReduceAction218___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7720;
+  fra.me.line = 7718;
   fra.me.meth = LOCATE_NEW_ReduceAction218_parser___ReduceAction218___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7720 */
+  /* ./parser//parser.nit:7718 */
   fra.me.REG[0] = NEW_ReduceAction218();
   INIT_ATTRIBUTES__ReduceAction218(fra.me.REG[0]);
   parser___ReduceAction218___init(fra.me.REG[0], REGB0, init_table);
@@ -99183,13 +99185,13 @@ val_t NEW_ReduceAction219_parser___ReduceAction219___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7737;
+  fra.me.line = 7735;
   fra.me.meth = LOCATE_NEW_ReduceAction219_parser___ReduceAction219___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7737 */
+  /* ./parser//parser.nit:7735 */
   fra.me.REG[0] = NEW_ReduceAction219();
   INIT_ATTRIBUTES__ReduceAction219(fra.me.REG[0]);
   parser___ReduceAction219___init(fra.me.REG[0], REGB0, init_table);
@@ -99299,13 +99301,13 @@ val_t NEW_ReduceAction220_parser___ReduceAction220___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7756;
+  fra.me.line = 7754;
   fra.me.meth = LOCATE_NEW_ReduceAction220_parser___ReduceAction220___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7756 */
+  /* ./parser//parser.nit:7754 */
   fra.me.REG[0] = NEW_ReduceAction220();
   INIT_ATTRIBUTES__ReduceAction220(fra.me.REG[0]);
   parser___ReduceAction220___init(fra.me.REG[0], REGB0, init_table);
@@ -99415,13 +99417,13 @@ val_t NEW_ReduceAction221_parser___ReduceAction221___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7778;
+  fra.me.line = 7776;
   fra.me.meth = LOCATE_NEW_ReduceAction221_parser___ReduceAction221___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7778 */
+  /* ./parser//parser.nit:7776 */
   fra.me.REG[0] = NEW_ReduceAction221();
   INIT_ATTRIBUTES__ReduceAction221(fra.me.REG[0]);
   parser___ReduceAction221___init(fra.me.REG[0], REGB0, init_table);
@@ -99531,13 +99533,13 @@ val_t NEW_ReduceAction222_parser___ReduceAction222___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7800;
+  fra.me.line = 7798;
   fra.me.meth = LOCATE_NEW_ReduceAction222_parser___ReduceAction222___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7800 */
+  /* ./parser//parser.nit:7798 */
   fra.me.REG[0] = NEW_ReduceAction222();
   INIT_ATTRIBUTES__ReduceAction222(fra.me.REG[0]);
   parser___ReduceAction222___init(fra.me.REG[0], REGB0, init_table);
@@ -99647,13 +99649,13 @@ val_t NEW_ReduceAction223_parser___ReduceAction223___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7825;
+  fra.me.line = 7823;
   fra.me.meth = LOCATE_NEW_ReduceAction223_parser___ReduceAction223___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7825 */
+  /* ./parser//parser.nit:7823 */
   fra.me.REG[0] = NEW_ReduceAction223();
   INIT_ATTRIBUTES__ReduceAction223(fra.me.REG[0]);
   parser___ReduceAction223___init(fra.me.REG[0], REGB0, init_table);
@@ -99763,13 +99765,13 @@ val_t NEW_ReduceAction230_parser___ReduceAction230___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7856;
+  fra.me.line = 7854;
   fra.me.meth = LOCATE_NEW_ReduceAction230_parser___ReduceAction230___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7856 */
+  /* ./parser//parser.nit:7854 */
   fra.me.REG[0] = NEW_ReduceAction230();
   INIT_ATTRIBUTES__ReduceAction230(fra.me.REG[0]);
   parser___ReduceAction230___init(fra.me.REG[0], REGB0, init_table);
@@ -99879,13 +99881,13 @@ val_t NEW_ReduceAction231_parser___ReduceAction231___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7884;
+  fra.me.line = 7882;
   fra.me.meth = LOCATE_NEW_ReduceAction231_parser___ReduceAction231___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7884 */
+  /* ./parser//parser.nit:7882 */
   fra.me.REG[0] = NEW_ReduceAction231();
   INIT_ATTRIBUTES__ReduceAction231(fra.me.REG[0]);
   parser___ReduceAction231___init(fra.me.REG[0], REGB0, init_table);
@@ -99995,13 +99997,13 @@ val_t NEW_ReduceAction232_parser___ReduceAction232___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7919;
+  fra.me.line = 7917;
   fra.me.meth = LOCATE_NEW_ReduceAction232_parser___ReduceAction232___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7919 */
+  /* ./parser//parser.nit:7917 */
   fra.me.REG[0] = NEW_ReduceAction232();
   INIT_ATTRIBUTES__ReduceAction232(fra.me.REG[0]);
   parser___ReduceAction232___init(fra.me.REG[0], REGB0, init_table);
@@ -100111,13 +100113,13 @@ val_t NEW_ReduceAction233_parser___ReduceAction233___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7951;
+  fra.me.line = 7949;
   fra.me.meth = LOCATE_NEW_ReduceAction233_parser___ReduceAction233___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7951 */
+  /* ./parser//parser.nit:7949 */
   fra.me.REG[0] = NEW_ReduceAction233();
   INIT_ATTRIBUTES__ReduceAction233(fra.me.REG[0]);
   parser___ReduceAction233___init(fra.me.REG[0], REGB0, init_table);
@@ -100227,13 +100229,13 @@ val_t NEW_ReduceAction234_parser___ReduceAction234___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 7975;
+  fra.me.line = 7973;
   fra.me.meth = LOCATE_NEW_ReduceAction234_parser___ReduceAction234___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:7975 */
+  /* ./parser//parser.nit:7973 */
   fra.me.REG[0] = NEW_ReduceAction234();
   INIT_ATTRIBUTES__ReduceAction234(fra.me.REG[0]);
   parser___ReduceAction234___init(fra.me.REG[0], REGB0, init_table);
@@ -100343,13 +100345,13 @@ val_t NEW_ReduceAction235_parser___ReduceAction235___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8002;
+  fra.me.line = 8000;
   fra.me.meth = LOCATE_NEW_ReduceAction235_parser___ReduceAction235___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8002 */
+  /* ./parser//parser.nit:8000 */
   fra.me.REG[0] = NEW_ReduceAction235();
   INIT_ATTRIBUTES__ReduceAction235(fra.me.REG[0]);
   parser___ReduceAction235___init(fra.me.REG[0], REGB0, init_table);
@@ -100459,13 +100461,13 @@ val_t NEW_ReduceAction236_parser___ReduceAction236___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8031;
+  fra.me.line = 8029;
   fra.me.meth = LOCATE_NEW_ReduceAction236_parser___ReduceAction236___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8031 */
+  /* ./parser//parser.nit:8029 */
   fra.me.REG[0] = NEW_ReduceAction236();
   INIT_ATTRIBUTES__ReduceAction236(fra.me.REG[0]);
   parser___ReduceAction236___init(fra.me.REG[0], REGB0, init_table);
@@ -100575,13 +100577,13 @@ val_t NEW_ReduceAction237_parser___ReduceAction237___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8057;
+  fra.me.line = 8055;
   fra.me.meth = LOCATE_NEW_ReduceAction237_parser___ReduceAction237___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8057 */
+  /* ./parser//parser.nit:8055 */
   fra.me.REG[0] = NEW_ReduceAction237();
   INIT_ATTRIBUTES__ReduceAction237(fra.me.REG[0]);
   parser___ReduceAction237___init(fra.me.REG[0], REGB0, init_table);
@@ -100691,13 +100693,13 @@ val_t NEW_ReduceAction238_parser___ReduceAction238___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8078;
+  fra.me.line = 8076;
   fra.me.meth = LOCATE_NEW_ReduceAction238_parser___ReduceAction238___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8078 */
+  /* ./parser//parser.nit:8076 */
   fra.me.REG[0] = NEW_ReduceAction238();
   INIT_ATTRIBUTES__ReduceAction238(fra.me.REG[0]);
   parser___ReduceAction238___init(fra.me.REG[0], REGB0, init_table);
@@ -100807,13 +100809,13 @@ val_t NEW_ReduceAction239_parser___ReduceAction239___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8095;
+  fra.me.line = 8093;
   fra.me.meth = LOCATE_NEW_ReduceAction239_parser___ReduceAction239___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8095 */
+  /* ./parser//parser.nit:8093 */
   fra.me.REG[0] = NEW_ReduceAction239();
   INIT_ATTRIBUTES__ReduceAction239(fra.me.REG[0]);
   parser___ReduceAction239___init(fra.me.REG[0], REGB0, init_table);
@@ -100923,13 +100925,13 @@ val_t NEW_ReduceAction240_parser___ReduceAction240___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8116;
+  fra.me.line = 8114;
   fra.me.meth = LOCATE_NEW_ReduceAction240_parser___ReduceAction240___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8116 */
+  /* ./parser//parser.nit:8114 */
   fra.me.REG[0] = NEW_ReduceAction240();
   INIT_ATTRIBUTES__ReduceAction240(fra.me.REG[0]);
   parser___ReduceAction240___init(fra.me.REG[0], REGB0, init_table);
@@ -101039,13 +101041,13 @@ val_t NEW_ReduceAction241_parser___ReduceAction241___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8151;
+  fra.me.line = 8149;
   fra.me.meth = LOCATE_NEW_ReduceAction241_parser___ReduceAction241___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8151 */
+  /* ./parser//parser.nit:8149 */
   fra.me.REG[0] = NEW_ReduceAction241();
   INIT_ATTRIBUTES__ReduceAction241(fra.me.REG[0]);
   parser___ReduceAction241___init(fra.me.REG[0], REGB0, init_table);
@@ -101155,13 +101157,13 @@ val_t NEW_ReduceAction242_parser___ReduceAction242___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8190;
+  fra.me.line = 8188;
   fra.me.meth = LOCATE_NEW_ReduceAction242_parser___ReduceAction242___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8190 */
+  /* ./parser//parser.nit:8188 */
   fra.me.REG[0] = NEW_ReduceAction242();
   INIT_ATTRIBUTES__ReduceAction242(fra.me.REG[0]);
   parser___ReduceAction242___init(fra.me.REG[0], REGB0, init_table);
@@ -101271,13 +101273,13 @@ val_t NEW_ReduceAction243_parser___ReduceAction243___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8222;
+  fra.me.line = 8220;
   fra.me.meth = LOCATE_NEW_ReduceAction243_parser___ReduceAction243___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8222 */
+  /* ./parser//parser.nit:8220 */
   fra.me.REG[0] = NEW_ReduceAction243();
   INIT_ATTRIBUTES__ReduceAction243(fra.me.REG[0]);
   parser___ReduceAction243___init(fra.me.REG[0], REGB0, init_table);
@@ -101387,13 +101389,13 @@ val_t NEW_ReduceAction244_parser___ReduceAction244___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8258;
+  fra.me.line = 8256;
   fra.me.meth = LOCATE_NEW_ReduceAction244_parser___ReduceAction244___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8258 */
+  /* ./parser//parser.nit:8256 */
   fra.me.REG[0] = NEW_ReduceAction244();
   INIT_ATTRIBUTES__ReduceAction244(fra.me.REG[0]);
   parser___ReduceAction244___init(fra.me.REG[0], REGB0, init_table);
@@ -101503,13 +101505,13 @@ val_t NEW_ReduceAction245_parser___ReduceAction245___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8289;
+  fra.me.line = 8287;
   fra.me.meth = LOCATE_NEW_ReduceAction245_parser___ReduceAction245___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8289 */
+  /* ./parser//parser.nit:8287 */
   fra.me.REG[0] = NEW_ReduceAction245();
   INIT_ATTRIBUTES__ReduceAction245(fra.me.REG[0]);
   parser___ReduceAction245___init(fra.me.REG[0], REGB0, init_table);
@@ -101619,13 +101621,13 @@ val_t NEW_ReduceAction246_parser___ReduceAction246___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8324;
+  fra.me.line = 8322;
   fra.me.meth = LOCATE_NEW_ReduceAction246_parser___ReduceAction246___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8324 */
+  /* ./parser//parser.nit:8322 */
   fra.me.REG[0] = NEW_ReduceAction246();
   INIT_ATTRIBUTES__ReduceAction246(fra.me.REG[0]);
   parser___ReduceAction246___init(fra.me.REG[0], REGB0, init_table);
@@ -101735,13 +101737,13 @@ val_t NEW_ReduceAction247_parser___ReduceAction247___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8357;
+  fra.me.line = 8355;
   fra.me.meth = LOCATE_NEW_ReduceAction247_parser___ReduceAction247___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8357 */
+  /* ./parser//parser.nit:8355 */
   fra.me.REG[0] = NEW_ReduceAction247();
   INIT_ATTRIBUTES__ReduceAction247(fra.me.REG[0]);
   parser___ReduceAction247___init(fra.me.REG[0], REGB0, init_table);
@@ -101851,13 +101853,13 @@ val_t NEW_ReduceAction248_parser___ReduceAction248___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8394;
+  fra.me.line = 8392;
   fra.me.meth = LOCATE_NEW_ReduceAction248_parser___ReduceAction248___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8394 */
+  /* ./parser//parser.nit:8392 */
   fra.me.REG[0] = NEW_ReduceAction248();
   INIT_ATTRIBUTES__ReduceAction248(fra.me.REG[0]);
   parser___ReduceAction248___init(fra.me.REG[0], REGB0, init_table);
@@ -101967,13 +101969,13 @@ val_t NEW_ReduceAction249_parser___ReduceAction249___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8424;
+  fra.me.line = 8422;
   fra.me.meth = LOCATE_NEW_ReduceAction249_parser___ReduceAction249___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8424 */
+  /* ./parser//parser.nit:8422 */
   fra.me.REG[0] = NEW_ReduceAction249();
   INIT_ATTRIBUTES__ReduceAction249(fra.me.REG[0]);
   parser___ReduceAction249___init(fra.me.REG[0], REGB0, init_table);
@@ -102083,13 +102085,13 @@ val_t NEW_ReduceAction250_parser___ReduceAction250___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8458;
+  fra.me.line = 8456;
   fra.me.meth = LOCATE_NEW_ReduceAction250_parser___ReduceAction250___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8458 */
+  /* ./parser//parser.nit:8456 */
   fra.me.REG[0] = NEW_ReduceAction250();
   INIT_ATTRIBUTES__ReduceAction250(fra.me.REG[0]);
   parser___ReduceAction250___init(fra.me.REG[0], REGB0, init_table);
@@ -102199,13 +102201,13 @@ val_t NEW_ReduceAction251_parser___ReduceAction251___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8475;
+  fra.me.line = 8473;
   fra.me.meth = LOCATE_NEW_ReduceAction251_parser___ReduceAction251___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8475 */
+  /* ./parser//parser.nit:8473 */
   fra.me.REG[0] = NEW_ReduceAction251();
   INIT_ATTRIBUTES__ReduceAction251(fra.me.REG[0]);
   parser___ReduceAction251___init(fra.me.REG[0], REGB0, init_table);
@@ -102315,13 +102317,13 @@ val_t NEW_ReduceAction252_parser___ReduceAction252___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8492;
+  fra.me.line = 8490;
   fra.me.meth = LOCATE_NEW_ReduceAction252_parser___ReduceAction252___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8492 */
+  /* ./parser//parser.nit:8490 */
   fra.me.REG[0] = NEW_ReduceAction252();
   INIT_ATTRIBUTES__ReduceAction252(fra.me.REG[0]);
   parser___ReduceAction252___init(fra.me.REG[0], REGB0, init_table);
@@ -102431,13 +102433,13 @@ val_t NEW_ReduceAction253_parser___ReduceAction253___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8511;
+  fra.me.line = 8509;
   fra.me.meth = LOCATE_NEW_ReduceAction253_parser___ReduceAction253___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8511 */
+  /* ./parser//parser.nit:8509 */
   fra.me.REG[0] = NEW_ReduceAction253();
   INIT_ATTRIBUTES__ReduceAction253(fra.me.REG[0]);
   parser___ReduceAction253___init(fra.me.REG[0], REGB0, init_table);
@@ -102547,13 +102549,13 @@ val_t NEW_ReduceAction254_parser___ReduceAction254___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8535;
+  fra.me.line = 8533;
   fra.me.meth = LOCATE_NEW_ReduceAction254_parser___ReduceAction254___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8535 */
+  /* ./parser//parser.nit:8533 */
   fra.me.REG[0] = NEW_ReduceAction254();
   INIT_ATTRIBUTES__ReduceAction254(fra.me.REG[0]);
   parser___ReduceAction254___init(fra.me.REG[0], REGB0, init_table);
@@ -102663,13 +102665,13 @@ val_t NEW_ReduceAction255_parser___ReduceAction255___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8562;
+  fra.me.line = 8560;
   fra.me.meth = LOCATE_NEW_ReduceAction255_parser___ReduceAction255___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8562 */
+  /* ./parser//parser.nit:8560 */
   fra.me.REG[0] = NEW_ReduceAction255();
   INIT_ATTRIBUTES__ReduceAction255(fra.me.REG[0]);
   parser___ReduceAction255___init(fra.me.REG[0], REGB0, init_table);
@@ -102779,13 +102781,13 @@ val_t NEW_ReduceAction256_parser___ReduceAction256___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8593;
+  fra.me.line = 8591;
   fra.me.meth = LOCATE_NEW_ReduceAction256_parser___ReduceAction256___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8593 */
+  /* ./parser//parser.nit:8591 */
   fra.me.REG[0] = NEW_ReduceAction256();
   INIT_ATTRIBUTES__ReduceAction256(fra.me.REG[0]);
   parser___ReduceAction256___init(fra.me.REG[0], REGB0, init_table);
@@ -102895,13 +102897,13 @@ val_t NEW_ReduceAction257_parser___ReduceAction257___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8627;
+  fra.me.line = 8625;
   fra.me.meth = LOCATE_NEW_ReduceAction257_parser___ReduceAction257___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8627 */
+  /* ./parser//parser.nit:8625 */
   fra.me.REG[0] = NEW_ReduceAction257();
   INIT_ATTRIBUTES__ReduceAction257(fra.me.REG[0]);
   parser___ReduceAction257___init(fra.me.REG[0], REGB0, init_table);
@@ -103011,13 +103013,13 @@ val_t NEW_ReduceAction258_parser___ReduceAction258___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8658;
+  fra.me.line = 8656;
   fra.me.meth = LOCATE_NEW_ReduceAction258_parser___ReduceAction258___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8658 */
+  /* ./parser//parser.nit:8656 */
   fra.me.REG[0] = NEW_ReduceAction258();
   INIT_ATTRIBUTES__ReduceAction258(fra.me.REG[0]);
   parser___ReduceAction258___init(fra.me.REG[0], REGB0, init_table);
@@ -103127,13 +103129,13 @@ val_t NEW_ReduceAction259_parser___ReduceAction259___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8686;
+  fra.me.line = 8684;
   fra.me.meth = LOCATE_NEW_ReduceAction259_parser___ReduceAction259___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8686 */
+  /* ./parser//parser.nit:8684 */
   fra.me.REG[0] = NEW_ReduceAction259();
   INIT_ATTRIBUTES__ReduceAction259(fra.me.REG[0]);
   parser___ReduceAction259___init(fra.me.REG[0], REGB0, init_table);
@@ -103243,13 +103245,13 @@ val_t NEW_ReduceAction260_parser___ReduceAction260___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8723;
+  fra.me.line = 8721;
   fra.me.meth = LOCATE_NEW_ReduceAction260_parser___ReduceAction260___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8723 */
+  /* ./parser//parser.nit:8721 */
   fra.me.REG[0] = NEW_ReduceAction260();
   INIT_ATTRIBUTES__ReduceAction260(fra.me.REG[0]);
   parser___ReduceAction260___init(fra.me.REG[0], REGB0, init_table);
@@ -103359,13 +103361,13 @@ val_t NEW_ReduceAction261_parser___ReduceAction261___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8757;
+  fra.me.line = 8755;
   fra.me.meth = LOCATE_NEW_ReduceAction261_parser___ReduceAction261___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8757 */
+  /* ./parser//parser.nit:8755 */
   fra.me.REG[0] = NEW_ReduceAction261();
   INIT_ATTRIBUTES__ReduceAction261(fra.me.REG[0]);
   parser___ReduceAction261___init(fra.me.REG[0], REGB0, init_table);
@@ -103475,13 +103477,13 @@ val_t NEW_ReduceAction262_parser___ReduceAction262___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8788;
+  fra.me.line = 8786;
   fra.me.meth = LOCATE_NEW_ReduceAction262_parser___ReduceAction262___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8788 */
+  /* ./parser//parser.nit:8786 */
   fra.me.REG[0] = NEW_ReduceAction262();
   INIT_ATTRIBUTES__ReduceAction262(fra.me.REG[0]);
   parser___ReduceAction262___init(fra.me.REG[0], REGB0, init_table);
@@ -103591,13 +103593,13 @@ val_t NEW_ReduceAction263_parser___ReduceAction263___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8819;
+  fra.me.line = 8817;
   fra.me.meth = LOCATE_NEW_ReduceAction263_parser___ReduceAction263___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8819 */
+  /* ./parser//parser.nit:8817 */
   fra.me.REG[0] = NEW_ReduceAction263();
   INIT_ATTRIBUTES__ReduceAction263(fra.me.REG[0]);
   parser___ReduceAction263___init(fra.me.REG[0], REGB0, init_table);
@@ -103707,13 +103709,13 @@ val_t NEW_ReduceAction264_parser___ReduceAction264___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8847;
+  fra.me.line = 8845;
   fra.me.meth = LOCATE_NEW_ReduceAction264_parser___ReduceAction264___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8847 */
+  /* ./parser//parser.nit:8845 */
   fra.me.REG[0] = NEW_ReduceAction264();
   INIT_ATTRIBUTES__ReduceAction264(fra.me.REG[0]);
   parser___ReduceAction264___init(fra.me.REG[0], REGB0, init_table);
@@ -103823,13 +103825,13 @@ val_t NEW_ReduceAction265_parser___ReduceAction265___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8884;
+  fra.me.line = 8882;
   fra.me.meth = LOCATE_NEW_ReduceAction265_parser___ReduceAction265___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8884 */
+  /* ./parser//parser.nit:8882 */
   fra.me.REG[0] = NEW_ReduceAction265();
   INIT_ATTRIBUTES__ReduceAction265(fra.me.REG[0]);
   parser___ReduceAction265___init(fra.me.REG[0], REGB0, init_table);
@@ -103939,13 +103941,13 @@ val_t NEW_ReduceAction266_parser___ReduceAction266___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8918;
+  fra.me.line = 8916;
   fra.me.meth = LOCATE_NEW_ReduceAction266_parser___ReduceAction266___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8918 */
+  /* ./parser//parser.nit:8916 */
   fra.me.REG[0] = NEW_ReduceAction266();
   INIT_ATTRIBUTES__ReduceAction266(fra.me.REG[0]);
   parser___ReduceAction266___init(fra.me.REG[0], REGB0, init_table);
@@ -104055,13 +104057,13 @@ val_t NEW_ReduceAction267_parser___ReduceAction267___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8949;
+  fra.me.line = 8947;
   fra.me.meth = LOCATE_NEW_ReduceAction267_parser___ReduceAction267___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8949 */
+  /* ./parser//parser.nit:8947 */
   fra.me.REG[0] = NEW_ReduceAction267();
   INIT_ATTRIBUTES__ReduceAction267(fra.me.REG[0]);
   parser___ReduceAction267___init(fra.me.REG[0], REGB0, init_table);
@@ -104171,13 +104173,13 @@ val_t NEW_ReduceAction268_parser___ReduceAction268___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8966;
+  fra.me.line = 8964;
   fra.me.meth = LOCATE_NEW_ReduceAction268_parser___ReduceAction268___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8966 */
+  /* ./parser//parser.nit:8964 */
   fra.me.REG[0] = NEW_ReduceAction268();
   INIT_ATTRIBUTES__ReduceAction268(fra.me.REG[0]);
   parser___ReduceAction268___init(fra.me.REG[0], REGB0, init_table);
@@ -104287,13 +104289,13 @@ val_t NEW_ReduceAction269_parser___ReduceAction269___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 8983;
+  fra.me.line = 8981;
   fra.me.meth = LOCATE_NEW_ReduceAction269_parser___ReduceAction269___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:8983 */
+  /* ./parser//parser.nit:8981 */
   fra.me.REG[0] = NEW_ReduceAction269();
   INIT_ATTRIBUTES__ReduceAction269(fra.me.REG[0]);
   parser___ReduceAction269___init(fra.me.REG[0], REGB0, init_table);
@@ -104403,13 +104405,13 @@ val_t NEW_ReduceAction270_parser___ReduceAction270___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9008;
+  fra.me.line = 9006;
   fra.me.meth = LOCATE_NEW_ReduceAction270_parser___ReduceAction270___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9008 */
+  /* ./parser//parser.nit:9006 */
   fra.me.REG[0] = NEW_ReduceAction270();
   INIT_ATTRIBUTES__ReduceAction270(fra.me.REG[0]);
   parser___ReduceAction270___init(fra.me.REG[0], REGB0, init_table);
@@ -104519,13 +104521,13 @@ val_t NEW_ReduceAction271_parser___ReduceAction271___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9030;
+  fra.me.line = 9028;
   fra.me.meth = LOCATE_NEW_ReduceAction271_parser___ReduceAction271___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9030 */
+  /* ./parser//parser.nit:9028 */
   fra.me.REG[0] = NEW_ReduceAction271();
   INIT_ATTRIBUTES__ReduceAction271(fra.me.REG[0]);
   parser___ReduceAction271___init(fra.me.REG[0], REGB0, init_table);
@@ -104635,13 +104637,13 @@ val_t NEW_ReduceAction272_parser___ReduceAction272___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9063;
+  fra.me.line = 9061;
   fra.me.meth = LOCATE_NEW_ReduceAction272_parser___ReduceAction272___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9063 */
+  /* ./parser//parser.nit:9061 */
   fra.me.REG[0] = NEW_ReduceAction272();
   INIT_ATTRIBUTES__ReduceAction272(fra.me.REG[0]);
   parser___ReduceAction272___init(fra.me.REG[0], REGB0, init_table);
@@ -104751,13 +104753,13 @@ val_t NEW_ReduceAction273_parser___ReduceAction273___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9092;
+  fra.me.line = 9090;
   fra.me.meth = LOCATE_NEW_ReduceAction273_parser___ReduceAction273___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9092 */
+  /* ./parser//parser.nit:9090 */
   fra.me.REG[0] = NEW_ReduceAction273();
   INIT_ATTRIBUTES__ReduceAction273(fra.me.REG[0]);
   parser___ReduceAction273___init(fra.me.REG[0], REGB0, init_table);
@@ -104867,13 +104869,13 @@ val_t NEW_ReduceAction274_parser___ReduceAction274___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9125;
+  fra.me.line = 9123;
   fra.me.meth = LOCATE_NEW_ReduceAction274_parser___ReduceAction274___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9125 */
+  /* ./parser//parser.nit:9123 */
   fra.me.REG[0] = NEW_ReduceAction274();
   INIT_ATTRIBUTES__ReduceAction274(fra.me.REG[0]);
   parser___ReduceAction274___init(fra.me.REG[0], REGB0, init_table);
@@ -104983,13 +104985,13 @@ val_t NEW_ReduceAction275_parser___ReduceAction275___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9154;
+  fra.me.line = 9152;
   fra.me.meth = LOCATE_NEW_ReduceAction275_parser___ReduceAction275___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9154 */
+  /* ./parser//parser.nit:9152 */
   fra.me.REG[0] = NEW_ReduceAction275();
   INIT_ATTRIBUTES__ReduceAction275(fra.me.REG[0]);
   parser___ReduceAction275___init(fra.me.REG[0], REGB0, init_table);
@@ -105099,13 +105101,13 @@ val_t NEW_ReduceAction276_parser___ReduceAction276___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9184;
+  fra.me.line = 9182;
   fra.me.meth = LOCATE_NEW_ReduceAction276_parser___ReduceAction276___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9184 */
+  /* ./parser//parser.nit:9182 */
   fra.me.REG[0] = NEW_ReduceAction276();
   INIT_ATTRIBUTES__ReduceAction276(fra.me.REG[0]);
   parser___ReduceAction276___init(fra.me.REG[0], REGB0, init_table);
@@ -105215,13 +105217,13 @@ val_t NEW_ReduceAction279_parser___ReduceAction279___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9209;
+  fra.me.line = 9207;
   fra.me.meth = LOCATE_NEW_ReduceAction279_parser___ReduceAction279___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9209 */
+  /* ./parser//parser.nit:9207 */
   fra.me.REG[0] = NEW_ReduceAction279();
   INIT_ATTRIBUTES__ReduceAction279(fra.me.REG[0]);
   parser___ReduceAction279___init(fra.me.REG[0], REGB0, init_table);
@@ -105331,13 +105333,13 @@ val_t NEW_ReduceAction280_parser___ReduceAction280___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9231;
+  fra.me.line = 9229;
   fra.me.meth = LOCATE_NEW_ReduceAction280_parser___ReduceAction280___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9231 */
+  /* ./parser//parser.nit:9229 */
   fra.me.REG[0] = NEW_ReduceAction280();
   INIT_ATTRIBUTES__ReduceAction280(fra.me.REG[0]);
   parser___ReduceAction280___init(fra.me.REG[0], REGB0, init_table);
@@ -105447,13 +105449,13 @@ val_t NEW_ReduceAction281_parser___ReduceAction281___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9266;
+  fra.me.line = 9264;
   fra.me.meth = LOCATE_NEW_ReduceAction281_parser___ReduceAction281___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9266 */
+  /* ./parser//parser.nit:9264 */
   fra.me.REG[0] = NEW_ReduceAction281();
   INIT_ATTRIBUTES__ReduceAction281(fra.me.REG[0]);
   parser___ReduceAction281___init(fra.me.REG[0], REGB0, init_table);
@@ -105563,13 +105565,13 @@ val_t NEW_ReduceAction282_parser___ReduceAction282___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9298;
+  fra.me.line = 9296;
   fra.me.meth = LOCATE_NEW_ReduceAction282_parser___ReduceAction282___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9298 */
+  /* ./parser//parser.nit:9296 */
   fra.me.REG[0] = NEW_ReduceAction282();
   INIT_ATTRIBUTES__ReduceAction282(fra.me.REG[0]);
   parser___ReduceAction282___init(fra.me.REG[0], REGB0, init_table);
@@ -105679,13 +105681,13 @@ val_t NEW_ReduceAction283_parser___ReduceAction283___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9340;
+  fra.me.line = 9338;
   fra.me.meth = LOCATE_NEW_ReduceAction283_parser___ReduceAction283___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9340 */
+  /* ./parser//parser.nit:9338 */
   fra.me.REG[0] = NEW_ReduceAction283();
   INIT_ATTRIBUTES__ReduceAction283(fra.me.REG[0]);
   parser___ReduceAction283___init(fra.me.REG[0], REGB0, init_table);
@@ -105795,13 +105797,13 @@ val_t NEW_ReduceAction284_parser___ReduceAction284___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9379;
+  fra.me.line = 9377;
   fra.me.meth = LOCATE_NEW_ReduceAction284_parser___ReduceAction284___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9379 */
+  /* ./parser//parser.nit:9377 */
   fra.me.REG[0] = NEW_ReduceAction284();
   INIT_ATTRIBUTES__ReduceAction284(fra.me.REG[0]);
   parser___ReduceAction284___init(fra.me.REG[0], REGB0, init_table);
@@ -105911,13 +105913,13 @@ val_t NEW_ReduceAction285_parser___ReduceAction285___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9406;
+  fra.me.line = 9404;
   fra.me.meth = LOCATE_NEW_ReduceAction285_parser___ReduceAction285___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9406 */
+  /* ./parser//parser.nit:9404 */
   fra.me.REG[0] = NEW_ReduceAction285();
   INIT_ATTRIBUTES__ReduceAction285(fra.me.REG[0]);
   parser___ReduceAction285___init(fra.me.REG[0], REGB0, init_table);
@@ -106027,13 +106029,13 @@ val_t NEW_ReduceAction286_parser___ReduceAction286___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9436;
+  fra.me.line = 9434;
   fra.me.meth = LOCATE_NEW_ReduceAction286_parser___ReduceAction286___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9436 */
+  /* ./parser//parser.nit:9434 */
   fra.me.REG[0] = NEW_ReduceAction286();
   INIT_ATTRIBUTES__ReduceAction286(fra.me.REG[0]);
   parser___ReduceAction286___init(fra.me.REG[0], REGB0, init_table);
@@ -106143,13 +106145,13 @@ val_t NEW_ReduceAction287_parser___ReduceAction287___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9459;
+  fra.me.line = 9457;
   fra.me.meth = LOCATE_NEW_ReduceAction287_parser___ReduceAction287___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9459 */
+  /* ./parser//parser.nit:9457 */
   fra.me.REG[0] = NEW_ReduceAction287();
   INIT_ATTRIBUTES__ReduceAction287(fra.me.REG[0]);
   parser___ReduceAction287___init(fra.me.REG[0], REGB0, init_table);
@@ -106259,13 +106261,13 @@ val_t NEW_ReduceAction288_parser___ReduceAction288___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9485;
+  fra.me.line = 9483;
   fra.me.meth = LOCATE_NEW_ReduceAction288_parser___ReduceAction288___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9485 */
+  /* ./parser//parser.nit:9483 */
   fra.me.REG[0] = NEW_ReduceAction288();
   INIT_ATTRIBUTES__ReduceAction288(fra.me.REG[0]);
   parser___ReduceAction288___init(fra.me.REG[0], REGB0, init_table);
@@ -106375,13 +106377,13 @@ val_t NEW_ReduceAction289_parser___ReduceAction289___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9499;
+  fra.me.line = 9497;
   fra.me.meth = LOCATE_NEW_ReduceAction289_parser___ReduceAction289___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9499 */
+  /* ./parser//parser.nit:9497 */
   fra.me.REG[0] = NEW_ReduceAction289();
   INIT_ATTRIBUTES__ReduceAction289(fra.me.REG[0]);
   parser___ReduceAction289___init(fra.me.REG[0], REGB0, init_table);
@@ -106491,13 +106493,13 @@ val_t NEW_ReduceAction293_parser___ReduceAction293___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9528;
+  fra.me.line = 9526;
   fra.me.meth = LOCATE_NEW_ReduceAction293_parser___ReduceAction293___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9528 */
+  /* ./parser//parser.nit:9526 */
   fra.me.REG[0] = NEW_ReduceAction293();
   INIT_ATTRIBUTES__ReduceAction293(fra.me.REG[0]);
   parser___ReduceAction293___init(fra.me.REG[0], REGB0, init_table);
@@ -106607,13 +106609,13 @@ val_t NEW_ReduceAction295_parser___ReduceAction295___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9570;
+  fra.me.line = 9568;
   fra.me.meth = LOCATE_NEW_ReduceAction295_parser___ReduceAction295___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9570 */
+  /* ./parser//parser.nit:9568 */
   fra.me.REG[0] = NEW_ReduceAction295();
   INIT_ATTRIBUTES__ReduceAction295(fra.me.REG[0]);
   parser___ReduceAction295___init(fra.me.REG[0], REGB0, init_table);
@@ -106723,13 +106725,13 @@ val_t NEW_ReduceAction297_parser___ReduceAction297___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9593;
+  fra.me.line = 9591;
   fra.me.meth = LOCATE_NEW_ReduceAction297_parser___ReduceAction297___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9593 */
+  /* ./parser//parser.nit:9591 */
   fra.me.REG[0] = NEW_ReduceAction297();
   INIT_ATTRIBUTES__ReduceAction297(fra.me.REG[0]);
   parser___ReduceAction297___init(fra.me.REG[0], REGB0, init_table);
@@ -106839,13 +106841,13 @@ val_t NEW_ReduceAction298_parser___ReduceAction298___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9616;
+  fra.me.line = 9614;
   fra.me.meth = LOCATE_NEW_ReduceAction298_parser___ReduceAction298___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9616 */
+  /* ./parser//parser.nit:9614 */
   fra.me.REG[0] = NEW_ReduceAction298();
   INIT_ATTRIBUTES__ReduceAction298(fra.me.REG[0]);
   parser___ReduceAction298___init(fra.me.REG[0], REGB0, init_table);
@@ -106955,13 +106957,13 @@ val_t NEW_ReduceAction299_parser___ReduceAction299___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9640;
+  fra.me.line = 9638;
   fra.me.meth = LOCATE_NEW_ReduceAction299_parser___ReduceAction299___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9640 */
+  /* ./parser//parser.nit:9638 */
   fra.me.REG[0] = NEW_ReduceAction299();
   INIT_ATTRIBUTES__ReduceAction299(fra.me.REG[0]);
   parser___ReduceAction299___init(fra.me.REG[0], REGB0, init_table);
@@ -107071,13 +107073,13 @@ val_t NEW_ReduceAction301_parser___ReduceAction301___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9662;
+  fra.me.line = 9660;
   fra.me.meth = LOCATE_NEW_ReduceAction301_parser___ReduceAction301___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9662 */
+  /* ./parser//parser.nit:9660 */
   fra.me.REG[0] = NEW_ReduceAction301();
   INIT_ATTRIBUTES__ReduceAction301(fra.me.REG[0]);
   parser___ReduceAction301___init(fra.me.REG[0], REGB0, init_table);
@@ -107187,13 +107189,13 @@ val_t NEW_ReduceAction303_parser___ReduceAction303___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9685;
+  fra.me.line = 9683;
   fra.me.meth = LOCATE_NEW_ReduceAction303_parser___ReduceAction303___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9685 */
+  /* ./parser//parser.nit:9683 */
   fra.me.REG[0] = NEW_ReduceAction303();
   INIT_ATTRIBUTES__ReduceAction303(fra.me.REG[0]);
   parser___ReduceAction303___init(fra.me.REG[0], REGB0, init_table);
@@ -107303,13 +107305,13 @@ val_t NEW_ReduceAction304_parser___ReduceAction304___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9708;
+  fra.me.line = 9706;
   fra.me.meth = LOCATE_NEW_ReduceAction304_parser___ReduceAction304___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9708 */
+  /* ./parser//parser.nit:9706 */
   fra.me.REG[0] = NEW_ReduceAction304();
   INIT_ATTRIBUTES__ReduceAction304(fra.me.REG[0]);
   parser___ReduceAction304___init(fra.me.REG[0], REGB0, init_table);
@@ -107419,13 +107421,13 @@ val_t NEW_ReduceAction305_parser___ReduceAction305___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9731;
+  fra.me.line = 9729;
   fra.me.meth = LOCATE_NEW_ReduceAction305_parser___ReduceAction305___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9731 */
+  /* ./parser//parser.nit:9729 */
   fra.me.REG[0] = NEW_ReduceAction305();
   INIT_ATTRIBUTES__ReduceAction305(fra.me.REG[0]);
   parser___ReduceAction305___init(fra.me.REG[0], REGB0, init_table);
@@ -107535,13 +107537,13 @@ val_t NEW_ReduceAction306_parser___ReduceAction306___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9754;
+  fra.me.line = 9752;
   fra.me.meth = LOCATE_NEW_ReduceAction306_parser___ReduceAction306___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9754 */
+  /* ./parser//parser.nit:9752 */
   fra.me.REG[0] = NEW_ReduceAction306();
   INIT_ATTRIBUTES__ReduceAction306(fra.me.REG[0]);
   parser___ReduceAction306___init(fra.me.REG[0], REGB0, init_table);
@@ -107651,13 +107653,13 @@ val_t NEW_ReduceAction307_parser___ReduceAction307___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9777;
+  fra.me.line = 9775;
   fra.me.meth = LOCATE_NEW_ReduceAction307_parser___ReduceAction307___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9777 */
+  /* ./parser//parser.nit:9775 */
   fra.me.REG[0] = NEW_ReduceAction307();
   INIT_ATTRIBUTES__ReduceAction307(fra.me.REG[0]);
   parser___ReduceAction307___init(fra.me.REG[0], REGB0, init_table);
@@ -107767,13 +107769,13 @@ val_t NEW_ReduceAction308_parser___ReduceAction308___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9800;
+  fra.me.line = 9798;
   fra.me.meth = LOCATE_NEW_ReduceAction308_parser___ReduceAction308___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9800 */
+  /* ./parser//parser.nit:9798 */
   fra.me.REG[0] = NEW_ReduceAction308();
   INIT_ATTRIBUTES__ReduceAction308(fra.me.REG[0]);
   parser___ReduceAction308___init(fra.me.REG[0], REGB0, init_table);
@@ -107883,13 +107885,13 @@ val_t NEW_ReduceAction309_parser___ReduceAction309___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9823;
+  fra.me.line = 9821;
   fra.me.meth = LOCATE_NEW_ReduceAction309_parser___ReduceAction309___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9823 */
+  /* ./parser//parser.nit:9821 */
   fra.me.REG[0] = NEW_ReduceAction309();
   INIT_ATTRIBUTES__ReduceAction309(fra.me.REG[0]);
   parser___ReduceAction309___init(fra.me.REG[0], REGB0, init_table);
@@ -107999,13 +108001,13 @@ val_t NEW_ReduceAction310_parser___ReduceAction310___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9846;
+  fra.me.line = 9844;
   fra.me.meth = LOCATE_NEW_ReduceAction310_parser___ReduceAction310___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9846 */
+  /* ./parser//parser.nit:9844 */
   fra.me.REG[0] = NEW_ReduceAction310();
   INIT_ATTRIBUTES__ReduceAction310(fra.me.REG[0]);
   parser___ReduceAction310___init(fra.me.REG[0], REGB0, init_table);
@@ -108115,13 +108117,13 @@ val_t NEW_ReduceAction311_parser___ReduceAction311___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9869;
+  fra.me.line = 9867;
   fra.me.meth = LOCATE_NEW_ReduceAction311_parser___ReduceAction311___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9869 */
+  /* ./parser//parser.nit:9867 */
   fra.me.REG[0] = NEW_ReduceAction311();
   INIT_ATTRIBUTES__ReduceAction311(fra.me.REG[0]);
   parser___ReduceAction311___init(fra.me.REG[0], REGB0, init_table);
@@ -108231,13 +108233,13 @@ val_t NEW_ReduceAction312_parser___ReduceAction312___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9892;
+  fra.me.line = 9890;
   fra.me.meth = LOCATE_NEW_ReduceAction312_parser___ReduceAction312___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9892 */
+  /* ./parser//parser.nit:9890 */
   fra.me.REG[0] = NEW_ReduceAction312();
   INIT_ATTRIBUTES__ReduceAction312(fra.me.REG[0]);
   parser___ReduceAction312___init(fra.me.REG[0], REGB0, init_table);
@@ -108347,13 +108349,13 @@ val_t NEW_ReduceAction313_parser___ReduceAction313___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9915;
+  fra.me.line = 9913;
   fra.me.meth = LOCATE_NEW_ReduceAction313_parser___ReduceAction313___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9915 */
+  /* ./parser//parser.nit:9913 */
   fra.me.REG[0] = NEW_ReduceAction313();
   INIT_ATTRIBUTES__ReduceAction313(fra.me.REG[0]);
   parser___ReduceAction313___init(fra.me.REG[0], REGB0, init_table);
@@ -108463,13 +108465,13 @@ val_t NEW_ReduceAction315_parser___ReduceAction315___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9938;
+  fra.me.line = 9936;
   fra.me.meth = LOCATE_NEW_ReduceAction315_parser___ReduceAction315___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9938 */
+  /* ./parser//parser.nit:9936 */
   fra.me.REG[0] = NEW_ReduceAction315();
   INIT_ATTRIBUTES__ReduceAction315(fra.me.REG[0]);
   parser___ReduceAction315___init(fra.me.REG[0], REGB0, init_table);
@@ -108579,13 +108581,13 @@ val_t NEW_ReduceAction316_parser___ReduceAction316___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9961;
+  fra.me.line = 9959;
   fra.me.meth = LOCATE_NEW_ReduceAction316_parser___ReduceAction316___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9961 */
+  /* ./parser//parser.nit:9959 */
   fra.me.REG[0] = NEW_ReduceAction316();
   INIT_ATTRIBUTES__ReduceAction316(fra.me.REG[0]);
   parser___ReduceAction316___init(fra.me.REG[0], REGB0, init_table);
@@ -108695,13 +108697,13 @@ val_t NEW_ReduceAction318_parser___ReduceAction318___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 9984;
+  fra.me.line = 9982;
   fra.me.meth = LOCATE_NEW_ReduceAction318_parser___ReduceAction318___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:9984 */
+  /* ./parser//parser.nit:9982 */
   fra.me.REG[0] = NEW_ReduceAction318();
   INIT_ATTRIBUTES__ReduceAction318(fra.me.REG[0]);
   parser___ReduceAction318___init(fra.me.REG[0], REGB0, init_table);
@@ -108811,13 +108813,13 @@ val_t NEW_ReduceAction319_parser___ReduceAction319___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10007;
+  fra.me.line = 10005;
   fra.me.meth = LOCATE_NEW_ReduceAction319_parser___ReduceAction319___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10007 */
+  /* ./parser//parser.nit:10005 */
   fra.me.REG[0] = NEW_ReduceAction319();
   INIT_ATTRIBUTES__ReduceAction319(fra.me.REG[0]);
   parser___ReduceAction319___init(fra.me.REG[0], REGB0, init_table);
@@ -108927,13 +108929,13 @@ val_t NEW_ReduceAction320_parser___ReduceAction320___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10030;
+  fra.me.line = 10028;
   fra.me.meth = LOCATE_NEW_ReduceAction320_parser___ReduceAction320___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10030 */
+  /* ./parser//parser.nit:10028 */
   fra.me.REG[0] = NEW_ReduceAction320();
   INIT_ATTRIBUTES__ReduceAction320(fra.me.REG[0]);
   parser___ReduceAction320___init(fra.me.REG[0], REGB0, init_table);
@@ -109043,13 +109045,13 @@ val_t NEW_ReduceAction322_parser___ReduceAction322___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10052;
+  fra.me.line = 10050;
   fra.me.meth = LOCATE_NEW_ReduceAction322_parser___ReduceAction322___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10052 */
+  /* ./parser//parser.nit:10050 */
   fra.me.REG[0] = NEW_ReduceAction322();
   INIT_ATTRIBUTES__ReduceAction322(fra.me.REG[0]);
   parser___ReduceAction322___init(fra.me.REG[0], REGB0, init_table);
@@ -109159,13 +109161,13 @@ val_t NEW_ReduceAction323_parser___ReduceAction323___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10074;
+  fra.me.line = 10072;
   fra.me.meth = LOCATE_NEW_ReduceAction323_parser___ReduceAction323___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10074 */
+  /* ./parser//parser.nit:10072 */
   fra.me.REG[0] = NEW_ReduceAction323();
   INIT_ATTRIBUTES__ReduceAction323(fra.me.REG[0]);
   parser___ReduceAction323___init(fra.me.REG[0], REGB0, init_table);
@@ -109275,13 +109277,13 @@ val_t NEW_ReduceAction325_parser___ReduceAction325___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10103;
+  fra.me.line = 10101;
   fra.me.meth = LOCATE_NEW_ReduceAction325_parser___ReduceAction325___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10103 */
+  /* ./parser//parser.nit:10101 */
   fra.me.REG[0] = NEW_ReduceAction325();
   INIT_ATTRIBUTES__ReduceAction325(fra.me.REG[0]);
   parser___ReduceAction325___init(fra.me.REG[0], REGB0, init_table);
@@ -109391,13 +109393,13 @@ val_t NEW_ReduceAction326_parser___ReduceAction326___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10130;
+  fra.me.line = 10128;
   fra.me.meth = LOCATE_NEW_ReduceAction326_parser___ReduceAction326___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10130 */
+  /* ./parser//parser.nit:10128 */
   fra.me.REG[0] = NEW_ReduceAction326();
   INIT_ATTRIBUTES__ReduceAction326(fra.me.REG[0]);
   parser___ReduceAction326___init(fra.me.REG[0], REGB0, init_table);
@@ -109507,13 +109509,13 @@ val_t NEW_ReduceAction327_parser___ReduceAction327___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10154;
+  fra.me.line = 10152;
   fra.me.meth = LOCATE_NEW_ReduceAction327_parser___ReduceAction327___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10154 */
+  /* ./parser//parser.nit:10152 */
   fra.me.REG[0] = NEW_ReduceAction327();
   INIT_ATTRIBUTES__ReduceAction327(fra.me.REG[0]);
   parser___ReduceAction327___init(fra.me.REG[0], REGB0, init_table);
@@ -109623,13 +109625,13 @@ val_t NEW_ReduceAction328_parser___ReduceAction328___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10177;
+  fra.me.line = 10175;
   fra.me.meth = LOCATE_NEW_ReduceAction328_parser___ReduceAction328___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10177 */
+  /* ./parser//parser.nit:10175 */
   fra.me.REG[0] = NEW_ReduceAction328();
   INIT_ATTRIBUTES__ReduceAction328(fra.me.REG[0]);
   parser___ReduceAction328___init(fra.me.REG[0], REGB0, init_table);
@@ -109739,13 +109741,13 @@ val_t NEW_ReduceAction329_parser___ReduceAction329___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10197;
+  fra.me.line = 10195;
   fra.me.meth = LOCATE_NEW_ReduceAction329_parser___ReduceAction329___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10197 */
+  /* ./parser//parser.nit:10195 */
   fra.me.REG[0] = NEW_ReduceAction329();
   INIT_ATTRIBUTES__ReduceAction329(fra.me.REG[0]);
   parser___ReduceAction329___init(fra.me.REG[0], REGB0, init_table);
@@ -109855,13 +109857,13 @@ val_t NEW_ReduceAction336_parser___ReduceAction336___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10222;
+  fra.me.line = 10220;
   fra.me.meth = LOCATE_NEW_ReduceAction336_parser___ReduceAction336___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10222 */
+  /* ./parser//parser.nit:10220 */
   fra.me.REG[0] = NEW_ReduceAction336();
   INIT_ATTRIBUTES__ReduceAction336(fra.me.REG[0]);
   parser___ReduceAction336___init(fra.me.REG[0], REGB0, init_table);
@@ -109971,13 +109973,13 @@ val_t NEW_ReduceAction337_parser___ReduceAction337___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10256;
+  fra.me.line = 10254;
   fra.me.meth = LOCATE_NEW_ReduceAction337_parser___ReduceAction337___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10256 */
+  /* ./parser//parser.nit:10254 */
   fra.me.REG[0] = NEW_ReduceAction337();
   INIT_ATTRIBUTES__ReduceAction337(fra.me.REG[0]);
   parser___ReduceAction337___init(fra.me.REG[0], REGB0, init_table);
@@ -110087,13 +110089,13 @@ val_t NEW_ReduceAction338_parser___ReduceAction338___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10284;
+  fra.me.line = 10282;
   fra.me.meth = LOCATE_NEW_ReduceAction338_parser___ReduceAction338___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10284 */
+  /* ./parser//parser.nit:10282 */
   fra.me.REG[0] = NEW_ReduceAction338();
   INIT_ATTRIBUTES__ReduceAction338(fra.me.REG[0]);
   parser___ReduceAction338___init(fra.me.REG[0], REGB0, init_table);
@@ -110203,13 +110205,13 @@ val_t NEW_ReduceAction339_parser___ReduceAction339___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10312;
+  fra.me.line = 10310;
   fra.me.meth = LOCATE_NEW_ReduceAction339_parser___ReduceAction339___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10312 */
+  /* ./parser//parser.nit:10310 */
   fra.me.REG[0] = NEW_ReduceAction339();
   INIT_ATTRIBUTES__ReduceAction339(fra.me.REG[0]);
   parser___ReduceAction339___init(fra.me.REG[0], REGB0, init_table);
@@ -110319,13 +110321,13 @@ val_t NEW_ReduceAction340_parser___ReduceAction340___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10331;
+  fra.me.line = 10329;
   fra.me.meth = LOCATE_NEW_ReduceAction340_parser___ReduceAction340___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10331 */
+  /* ./parser//parser.nit:10329 */
   fra.me.REG[0] = NEW_ReduceAction340();
   INIT_ATTRIBUTES__ReduceAction340(fra.me.REG[0]);
   parser___ReduceAction340___init(fra.me.REG[0], REGB0, init_table);
@@ -110435,13 +110437,13 @@ val_t NEW_ReduceAction341_parser___ReduceAction341___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10348;
+  fra.me.line = 10346;
   fra.me.meth = LOCATE_NEW_ReduceAction341_parser___ReduceAction341___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10348 */
+  /* ./parser//parser.nit:10346 */
   fra.me.REG[0] = NEW_ReduceAction341();
   INIT_ATTRIBUTES__ReduceAction341(fra.me.REG[0]);
   parser___ReduceAction341___init(fra.me.REG[0], REGB0, init_table);
@@ -110551,13 +110553,13 @@ val_t NEW_ReduceAction342_parser___ReduceAction342___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10365;
+  fra.me.line = 10363;
   fra.me.meth = LOCATE_NEW_ReduceAction342_parser___ReduceAction342___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10365 */
+  /* ./parser//parser.nit:10363 */
   fra.me.REG[0] = NEW_ReduceAction342();
   INIT_ATTRIBUTES__ReduceAction342(fra.me.REG[0]);
   parser___ReduceAction342___init(fra.me.REG[0], REGB0, init_table);
@@ -110667,13 +110669,13 @@ val_t NEW_ReduceAction343_parser___ReduceAction343___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10382;
+  fra.me.line = 10380;
   fra.me.meth = LOCATE_NEW_ReduceAction343_parser___ReduceAction343___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10382 */
+  /* ./parser//parser.nit:10380 */
   fra.me.REG[0] = NEW_ReduceAction343();
   INIT_ATTRIBUTES__ReduceAction343(fra.me.REG[0]);
   parser___ReduceAction343___init(fra.me.REG[0], REGB0, init_table);
@@ -110783,13 +110785,13 @@ val_t NEW_ReduceAction344_parser___ReduceAction344___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10399;
+  fra.me.line = 10397;
   fra.me.meth = LOCATE_NEW_ReduceAction344_parser___ReduceAction344___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10399 */
+  /* ./parser//parser.nit:10397 */
   fra.me.REG[0] = NEW_ReduceAction344();
   INIT_ATTRIBUTES__ReduceAction344(fra.me.REG[0]);
   parser___ReduceAction344___init(fra.me.REG[0], REGB0, init_table);
@@ -110899,13 +110901,13 @@ val_t NEW_ReduceAction345_parser___ReduceAction345___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10416;
+  fra.me.line = 10414;
   fra.me.meth = LOCATE_NEW_ReduceAction345_parser___ReduceAction345___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10416 */
+  /* ./parser//parser.nit:10414 */
   fra.me.REG[0] = NEW_ReduceAction345();
   INIT_ATTRIBUTES__ReduceAction345(fra.me.REG[0]);
   parser___ReduceAction345___init(fra.me.REG[0], REGB0, init_table);
@@ -111015,13 +111017,13 @@ val_t NEW_ReduceAction346_parser___ReduceAction346___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10433;
+  fra.me.line = 10431;
   fra.me.meth = LOCATE_NEW_ReduceAction346_parser___ReduceAction346___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10433 */
+  /* ./parser//parser.nit:10431 */
   fra.me.REG[0] = NEW_ReduceAction346();
   INIT_ATTRIBUTES__ReduceAction346(fra.me.REG[0]);
   parser___ReduceAction346___init(fra.me.REG[0], REGB0, init_table);
@@ -111131,13 +111133,13 @@ val_t NEW_ReduceAction347_parser___ReduceAction347___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10450;
+  fra.me.line = 10448;
   fra.me.meth = LOCATE_NEW_ReduceAction347_parser___ReduceAction347___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10450 */
+  /* ./parser//parser.nit:10448 */
   fra.me.REG[0] = NEW_ReduceAction347();
   INIT_ATTRIBUTES__ReduceAction347(fra.me.REG[0]);
   parser___ReduceAction347___init(fra.me.REG[0], REGB0, init_table);
@@ -111247,13 +111249,13 @@ val_t NEW_ReduceAction348_parser___ReduceAction348___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10467;
+  fra.me.line = 10465;
   fra.me.meth = LOCATE_NEW_ReduceAction348_parser___ReduceAction348___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10467 */
+  /* ./parser//parser.nit:10465 */
   fra.me.REG[0] = NEW_ReduceAction348();
   INIT_ATTRIBUTES__ReduceAction348(fra.me.REG[0]);
   parser___ReduceAction348___init(fra.me.REG[0], REGB0, init_table);
@@ -111363,13 +111365,13 @@ val_t NEW_ReduceAction351_parser___ReduceAction351___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10499;
+  fra.me.line = 10497;
   fra.me.meth = LOCATE_NEW_ReduceAction351_parser___ReduceAction351___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10499 */
+  /* ./parser//parser.nit:10497 */
   fra.me.REG[0] = NEW_ReduceAction351();
   INIT_ATTRIBUTES__ReduceAction351(fra.me.REG[0]);
   parser___ReduceAction351___init(fra.me.REG[0], REGB0, init_table);
@@ -111479,13 +111481,13 @@ val_t NEW_ReduceAction352_parser___ReduceAction352___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10536;
+  fra.me.line = 10534;
   fra.me.meth = LOCATE_NEW_ReduceAction352_parser___ReduceAction352___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10536 */
+  /* ./parser//parser.nit:10534 */
   fra.me.REG[0] = NEW_ReduceAction352();
   INIT_ATTRIBUTES__ReduceAction352(fra.me.REG[0]);
   parser___ReduceAction352___init(fra.me.REG[0], REGB0, init_table);
@@ -111595,13 +111597,13 @@ val_t NEW_ReduceAction353_parser___ReduceAction353___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10561;
+  fra.me.line = 10559;
   fra.me.meth = LOCATE_NEW_ReduceAction353_parser___ReduceAction353___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10561 */
+  /* ./parser//parser.nit:10559 */
   fra.me.REG[0] = NEW_ReduceAction353();
   INIT_ATTRIBUTES__ReduceAction353(fra.me.REG[0]);
   parser___ReduceAction353___init(fra.me.REG[0], REGB0, init_table);
@@ -111711,13 +111713,13 @@ val_t NEW_ReduceAction354_parser___ReduceAction354___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10590;
+  fra.me.line = 10588;
   fra.me.meth = LOCATE_NEW_ReduceAction354_parser___ReduceAction354___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10590 */
+  /* ./parser//parser.nit:10588 */
   fra.me.REG[0] = NEW_ReduceAction354();
   INIT_ATTRIBUTES__ReduceAction354(fra.me.REG[0]);
   parser___ReduceAction354___init(fra.me.REG[0], REGB0, init_table);
@@ -111827,13 +111829,13 @@ val_t NEW_ReduceAction355_parser___ReduceAction355___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10614;
+  fra.me.line = 10612;
   fra.me.meth = LOCATE_NEW_ReduceAction355_parser___ReduceAction355___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10614 */
+  /* ./parser//parser.nit:10612 */
   fra.me.REG[0] = NEW_ReduceAction355();
   INIT_ATTRIBUTES__ReduceAction355(fra.me.REG[0]);
   parser___ReduceAction355___init(fra.me.REG[0], REGB0, init_table);
@@ -111943,13 +111945,13 @@ val_t NEW_ReduceAction356_parser___ReduceAction356___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10631;
+  fra.me.line = 10629;
   fra.me.meth = LOCATE_NEW_ReduceAction356_parser___ReduceAction356___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10631 */
+  /* ./parser//parser.nit:10629 */
   fra.me.REG[0] = NEW_ReduceAction356();
   INIT_ATTRIBUTES__ReduceAction356(fra.me.REG[0]);
   parser___ReduceAction356___init(fra.me.REG[0], REGB0, init_table);
@@ -112059,13 +112061,13 @@ val_t NEW_ReduceAction358_parser___ReduceAction358___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10648;
+  fra.me.line = 10646;
   fra.me.meth = LOCATE_NEW_ReduceAction358_parser___ReduceAction358___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10648 */
+  /* ./parser//parser.nit:10646 */
   fra.me.REG[0] = NEW_ReduceAction358();
   INIT_ATTRIBUTES__ReduceAction358(fra.me.REG[0]);
   parser___ReduceAction358___init(fra.me.REG[0], REGB0, init_table);
@@ -112175,13 +112177,13 @@ val_t NEW_ReduceAction359_parser___ReduceAction359___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10665;
+  fra.me.line = 10663;
   fra.me.meth = LOCATE_NEW_ReduceAction359_parser___ReduceAction359___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10665 */
+  /* ./parser//parser.nit:10663 */
   fra.me.REG[0] = NEW_ReduceAction359();
   INIT_ATTRIBUTES__ReduceAction359(fra.me.REG[0]);
   parser___ReduceAction359___init(fra.me.REG[0], REGB0, init_table);
@@ -112291,13 +112293,13 @@ val_t NEW_ReduceAction360_parser___ReduceAction360___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10686;
+  fra.me.line = 10684;
   fra.me.meth = LOCATE_NEW_ReduceAction360_parser___ReduceAction360___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10686 */
+  /* ./parser//parser.nit:10684 */
   fra.me.REG[0] = NEW_ReduceAction360();
   INIT_ATTRIBUTES__ReduceAction360(fra.me.REG[0]);
   parser___ReduceAction360___init(fra.me.REG[0], REGB0, init_table);
@@ -112407,13 +112409,13 @@ val_t NEW_ReduceAction361_parser___ReduceAction361___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10711;
+  fra.me.line = 10709;
   fra.me.meth = LOCATE_NEW_ReduceAction361_parser___ReduceAction361___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10711 */
+  /* ./parser//parser.nit:10709 */
   fra.me.REG[0] = NEW_ReduceAction361();
   INIT_ATTRIBUTES__ReduceAction361(fra.me.REG[0]);
   parser___ReduceAction361___init(fra.me.REG[0], REGB0, init_table);
@@ -112523,13 +112525,13 @@ val_t NEW_ReduceAction363_parser___ReduceAction363___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10723;
+  fra.me.line = 10721;
   fra.me.meth = LOCATE_NEW_ReduceAction363_parser___ReduceAction363___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10723 */
+  /* ./parser//parser.nit:10721 */
   fra.me.REG[0] = NEW_ReduceAction363();
   INIT_ATTRIBUTES__ReduceAction363(fra.me.REG[0]);
   parser___ReduceAction363___init(fra.me.REG[0], REGB0, init_table);
@@ -112639,13 +112641,13 @@ val_t NEW_ReduceAction366_parser___ReduceAction366___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10740;
+  fra.me.line = 10738;
   fra.me.meth = LOCATE_NEW_ReduceAction366_parser___ReduceAction366___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10740 */
+  /* ./parser//parser.nit:10738 */
   fra.me.REG[0] = NEW_ReduceAction366();
   INIT_ATTRIBUTES__ReduceAction366(fra.me.REG[0]);
   parser___ReduceAction366___init(fra.me.REG[0], REGB0, init_table);
@@ -112755,13 +112757,13 @@ val_t NEW_ReduceAction371_parser___ReduceAction371___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10756;
+  fra.me.line = 10754;
   fra.me.meth = LOCATE_NEW_ReduceAction371_parser___ReduceAction371___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10756 */
+  /* ./parser//parser.nit:10754 */
   fra.me.REG[0] = NEW_ReduceAction371();
   INIT_ATTRIBUTES__ReduceAction371(fra.me.REG[0]);
   parser___ReduceAction371___init(fra.me.REG[0], REGB0, init_table);
@@ -112871,13 +112873,13 @@ val_t NEW_ReduceAction372_parser___ReduceAction372___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10774;
+  fra.me.line = 10772;
   fra.me.meth = LOCATE_NEW_ReduceAction372_parser___ReduceAction372___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10774 */
+  /* ./parser//parser.nit:10772 */
   fra.me.REG[0] = NEW_ReduceAction372();
   INIT_ATTRIBUTES__ReduceAction372(fra.me.REG[0]);
   parser___ReduceAction372___init(fra.me.REG[0], REGB0, init_table);
@@ -112987,13 +112989,13 @@ val_t NEW_ReduceAction373_parser___ReduceAction373___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10790;
+  fra.me.line = 10788;
   fra.me.meth = LOCATE_NEW_ReduceAction373_parser___ReduceAction373___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10790 */
+  /* ./parser//parser.nit:10788 */
   fra.me.REG[0] = NEW_ReduceAction373();
   INIT_ATTRIBUTES__ReduceAction373(fra.me.REG[0]);
   parser___ReduceAction373___init(fra.me.REG[0], REGB0, init_table);
@@ -113103,13 +113105,13 @@ val_t NEW_ReduceAction374_parser___ReduceAction374___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10807;
+  fra.me.line = 10805;
   fra.me.meth = LOCATE_NEW_ReduceAction374_parser___ReduceAction374___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10807 */
+  /* ./parser//parser.nit:10805 */
   fra.me.REG[0] = NEW_ReduceAction374();
   INIT_ATTRIBUTES__ReduceAction374(fra.me.REG[0]);
   parser___ReduceAction374___init(fra.me.REG[0], REGB0, init_table);
@@ -113219,13 +113221,13 @@ val_t NEW_ReduceAction375_parser___ReduceAction375___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10831;
+  fra.me.line = 10829;
   fra.me.meth = LOCATE_NEW_ReduceAction375_parser___ReduceAction375___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10831 */
+  /* ./parser//parser.nit:10829 */
   fra.me.REG[0] = NEW_ReduceAction375();
   INIT_ATTRIBUTES__ReduceAction375(fra.me.REG[0]);
   parser___ReduceAction375___init(fra.me.REG[0], REGB0, init_table);
@@ -113335,13 +113337,13 @@ val_t NEW_ReduceAction376_parser___ReduceAction376___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10850;
+  fra.me.line = 10848;
   fra.me.meth = LOCATE_NEW_ReduceAction376_parser___ReduceAction376___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10850 */
+  /* ./parser//parser.nit:10848 */
   fra.me.REG[0] = NEW_ReduceAction376();
   INIT_ATTRIBUTES__ReduceAction376(fra.me.REG[0]);
   parser___ReduceAction376___init(fra.me.REG[0], REGB0, init_table);
@@ -113451,13 +113453,13 @@ val_t NEW_ReduceAction377_parser___ReduceAction377___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10873;
+  fra.me.line = 10871;
   fra.me.meth = LOCATE_NEW_ReduceAction377_parser___ReduceAction377___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10873 */
+  /* ./parser//parser.nit:10871 */
   fra.me.REG[0] = NEW_ReduceAction377();
   INIT_ATTRIBUTES__ReduceAction377(fra.me.REG[0]);
   parser___ReduceAction377___init(fra.me.REG[0], REGB0, init_table);
@@ -113567,13 +113569,13 @@ val_t NEW_ReduceAction378_parser___ReduceAction378___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10893;
+  fra.me.line = 10891;
   fra.me.meth = LOCATE_NEW_ReduceAction378_parser___ReduceAction378___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10893 */
+  /* ./parser//parser.nit:10891 */
   fra.me.REG[0] = NEW_ReduceAction378();
   INIT_ATTRIBUTES__ReduceAction378(fra.me.REG[0]);
   parser___ReduceAction378___init(fra.me.REG[0], REGB0, init_table);
@@ -113683,13 +113685,13 @@ val_t NEW_ReduceAction379_parser___ReduceAction379___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10908;
+  fra.me.line = 10906;
   fra.me.meth = LOCATE_NEW_ReduceAction379_parser___ReduceAction379___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10908 */
+  /* ./parser//parser.nit:10906 */
   fra.me.REG[0] = NEW_ReduceAction379();
   INIT_ATTRIBUTES__ReduceAction379(fra.me.REG[0]);
   parser___ReduceAction379___init(fra.me.REG[0], REGB0, init_table);
@@ -113799,13 +113801,13 @@ val_t NEW_ReduceAction380_parser___ReduceAction380___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10923;
+  fra.me.line = 10921;
   fra.me.meth = LOCATE_NEW_ReduceAction380_parser___ReduceAction380___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10923 */
+  /* ./parser//parser.nit:10921 */
   fra.me.REG[0] = NEW_ReduceAction380();
   INIT_ATTRIBUTES__ReduceAction380(fra.me.REG[0]);
   parser___ReduceAction380___init(fra.me.REG[0], REGB0, init_table);
@@ -113915,13 +113917,13 @@ val_t NEW_ReduceAction381_parser___ReduceAction381___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10934;
+  fra.me.line = 10932;
   fra.me.meth = LOCATE_NEW_ReduceAction381_parser___ReduceAction381___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10934 */
+  /* ./parser//parser.nit:10932 */
   fra.me.REG[0] = NEW_ReduceAction381();
   INIT_ATTRIBUTES__ReduceAction381(fra.me.REG[0]);
   parser___ReduceAction381___init(fra.me.REG[0], REGB0, init_table);
@@ -114031,13 +114033,13 @@ val_t NEW_ReduceAction383_parser___ReduceAction383___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10953;
+  fra.me.line = 10951;
   fra.me.meth = LOCATE_NEW_ReduceAction383_parser___ReduceAction383___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10953 */
+  /* ./parser//parser.nit:10951 */
   fra.me.REG[0] = NEW_ReduceAction383();
   INIT_ATTRIBUTES__ReduceAction383(fra.me.REG[0]);
   parser___ReduceAction383___init(fra.me.REG[0], REGB0, init_table);
@@ -114147,13 +114149,13 @@ val_t NEW_ReduceAction384_parser___ReduceAction384___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10973;
+  fra.me.line = 10971;
   fra.me.meth = LOCATE_NEW_ReduceAction384_parser___ReduceAction384___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10973 */
+  /* ./parser//parser.nit:10971 */
   fra.me.REG[0] = NEW_ReduceAction384();
   INIT_ATTRIBUTES__ReduceAction384(fra.me.REG[0]);
   parser___ReduceAction384___init(fra.me.REG[0], REGB0, init_table);
@@ -114263,13 +114265,13 @@ val_t NEW_ReduceAction386_parser___ReduceAction386___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10984;
+  fra.me.line = 10982;
   fra.me.meth = LOCATE_NEW_ReduceAction386_parser___ReduceAction386___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10984 */
+  /* ./parser//parser.nit:10982 */
   fra.me.REG[0] = NEW_ReduceAction386();
   INIT_ATTRIBUTES__ReduceAction386(fra.me.REG[0]);
   parser___ReduceAction386___init(fra.me.REG[0], REGB0, init_table);
@@ -114379,13 +114381,13 @@ val_t NEW_ReduceAction387_parser___ReduceAction387___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 10997;
+  fra.me.line = 10995;
   fra.me.meth = LOCATE_NEW_ReduceAction387_parser___ReduceAction387___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:10997 */
+  /* ./parser//parser.nit:10995 */
   fra.me.REG[0] = NEW_ReduceAction387();
   INIT_ATTRIBUTES__ReduceAction387(fra.me.REG[0]);
   parser___ReduceAction387___init(fra.me.REG[0], REGB0, init_table);
@@ -114495,13 +114497,13 @@ val_t NEW_ReduceAction388_parser___ReduceAction388___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11009;
+  fra.me.line = 11007;
   fra.me.meth = LOCATE_NEW_ReduceAction388_parser___ReduceAction388___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11009 */
+  /* ./parser//parser.nit:11007 */
   fra.me.REG[0] = NEW_ReduceAction388();
   INIT_ATTRIBUTES__ReduceAction388(fra.me.REG[0]);
   parser___ReduceAction388___init(fra.me.REG[0], REGB0, init_table);
@@ -114611,13 +114613,13 @@ val_t NEW_ReduceAction389_parser___ReduceAction389___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11022;
+  fra.me.line = 11020;
   fra.me.meth = LOCATE_NEW_ReduceAction389_parser___ReduceAction389___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11022 */
+  /* ./parser//parser.nit:11020 */
   fra.me.REG[0] = NEW_ReduceAction389();
   INIT_ATTRIBUTES__ReduceAction389(fra.me.REG[0]);
   parser___ReduceAction389___init(fra.me.REG[0], REGB0, init_table);
@@ -114727,13 +114729,13 @@ val_t NEW_ReduceAction637_parser___ReduceAction637___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11047;
+  fra.me.line = 11045;
   fra.me.meth = LOCATE_NEW_ReduceAction637_parser___ReduceAction637___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11047 */
+  /* ./parser//parser.nit:11045 */
   fra.me.REG[0] = NEW_ReduceAction637();
   INIT_ATTRIBUTES__ReduceAction637(fra.me.REG[0]);
   parser___ReduceAction637___init(fra.me.REG[0], REGB0, init_table);
@@ -114843,13 +114845,13 @@ val_t NEW_ReduceAction638_parser___ReduceAction638___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11068;
+  fra.me.line = 11066;
   fra.me.meth = LOCATE_NEW_ReduceAction638_parser___ReduceAction638___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11068 */
+  /* ./parser//parser.nit:11066 */
   fra.me.REG[0] = NEW_ReduceAction638();
   INIT_ATTRIBUTES__ReduceAction638(fra.me.REG[0]);
   parser___ReduceAction638___init(fra.me.REG[0], REGB0, init_table);
@@ -114959,13 +114961,13 @@ val_t NEW_ReduceAction639_parser___ReduceAction639___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11097;
+  fra.me.line = 11095;
   fra.me.meth = LOCATE_NEW_ReduceAction639_parser___ReduceAction639___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11097 */
+  /* ./parser//parser.nit:11095 */
   fra.me.REG[0] = NEW_ReduceAction639();
   INIT_ATTRIBUTES__ReduceAction639(fra.me.REG[0]);
   parser___ReduceAction639___init(fra.me.REG[0], REGB0, init_table);
@@ -115075,13 +115077,13 @@ val_t NEW_ReduceAction642_parser___ReduceAction642___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11124;
+  fra.me.line = 11122;
   fra.me.meth = LOCATE_NEW_ReduceAction642_parser___ReduceAction642___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11124 */
+  /* ./parser//parser.nit:11122 */
   fra.me.REG[0] = NEW_ReduceAction642();
   INIT_ATTRIBUTES__ReduceAction642(fra.me.REG[0]);
   parser___ReduceAction642___init(fra.me.REG[0], REGB0, init_table);
@@ -115191,13 +115193,13 @@ val_t NEW_ReduceAction655_parser___ReduceAction655___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11139;
+  fra.me.line = 11137;
   fra.me.meth = LOCATE_NEW_ReduceAction655_parser___ReduceAction655___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11139 */
+  /* ./parser//parser.nit:11137 */
   fra.me.REG[0] = NEW_ReduceAction655();
   INIT_ATTRIBUTES__ReduceAction655(fra.me.REG[0]);
   parser___ReduceAction655___init(fra.me.REG[0], REGB0, init_table);
@@ -115307,13 +115309,13 @@ val_t NEW_ReduceAction656_parser___ReduceAction656___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11152;
+  fra.me.line = 11150;
   fra.me.meth = LOCATE_NEW_ReduceAction656_parser___ReduceAction656___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11152 */
+  /* ./parser//parser.nit:11150 */
   fra.me.REG[0] = NEW_ReduceAction656();
   INIT_ATTRIBUTES__ReduceAction656(fra.me.REG[0]);
   parser___ReduceAction656___init(fra.me.REG[0], REGB0, init_table);
@@ -115423,13 +115425,13 @@ val_t NEW_ReduceAction663_parser___ReduceAction663___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11169;
+  fra.me.line = 11167;
   fra.me.meth = LOCATE_NEW_ReduceAction663_parser___ReduceAction663___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11169 */
+  /* ./parser//parser.nit:11167 */
   fra.me.REG[0] = NEW_ReduceAction663();
   INIT_ATTRIBUTES__ReduceAction663(fra.me.REG[0]);
   parser___ReduceAction663___init(fra.me.REG[0], REGB0, init_table);
@@ -115539,13 +115541,13 @@ val_t NEW_ReduceAction664_parser___ReduceAction664___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11190;
+  fra.me.line = 11188;
   fra.me.meth = LOCATE_NEW_ReduceAction664_parser___ReduceAction664___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11190 */
+  /* ./parser//parser.nit:11188 */
   fra.me.REG[0] = NEW_ReduceAction664();
   INIT_ATTRIBUTES__ReduceAction664(fra.me.REG[0]);
   parser___ReduceAction664___init(fra.me.REG[0], REGB0, init_table);
@@ -115655,13 +115657,13 @@ val_t NEW_ReduceAction665_parser___ReduceAction665___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11207;
+  fra.me.line = 11205;
   fra.me.meth = LOCATE_NEW_ReduceAction665_parser___ReduceAction665___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11207 */
+  /* ./parser//parser.nit:11205 */
   fra.me.REG[0] = NEW_ReduceAction665();
   INIT_ATTRIBUTES__ReduceAction665(fra.me.REG[0]);
   parser___ReduceAction665___init(fra.me.REG[0], REGB0, init_table);
@@ -115771,13 +115773,13 @@ val_t NEW_ReduceAction666_parser___ReduceAction666___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11228;
+  fra.me.line = 11226;
   fra.me.meth = LOCATE_NEW_ReduceAction666_parser___ReduceAction666___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11228 */
+  /* ./parser//parser.nit:11226 */
   fra.me.REG[0] = NEW_ReduceAction666();
   INIT_ATTRIBUTES__ReduceAction666(fra.me.REG[0]);
   parser___ReduceAction666___init(fra.me.REG[0], REGB0, init_table);
@@ -115887,13 +115889,13 @@ val_t NEW_ReduceAction667_parser___ReduceAction667___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11245;
+  fra.me.line = 11243;
   fra.me.meth = LOCATE_NEW_ReduceAction667_parser___ReduceAction667___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11245 */
+  /* ./parser//parser.nit:11243 */
   fra.me.REG[0] = NEW_ReduceAction667();
   INIT_ATTRIBUTES__ReduceAction667(fra.me.REG[0]);
   parser___ReduceAction667___init(fra.me.REG[0], REGB0, init_table);
@@ -116003,13 +116005,13 @@ val_t NEW_ReduceAction668_parser___ReduceAction668___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11266;
+  fra.me.line = 11264;
   fra.me.meth = LOCATE_NEW_ReduceAction668_parser___ReduceAction668___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11266 */
+  /* ./parser//parser.nit:11264 */
   fra.me.REG[0] = NEW_ReduceAction668();
   INIT_ATTRIBUTES__ReduceAction668(fra.me.REG[0]);
   parser___ReduceAction668___init(fra.me.REG[0], REGB0, init_table);
@@ -116119,13 +116121,13 @@ val_t NEW_ReduceAction669_parser___ReduceAction669___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11283;
+  fra.me.line = 11281;
   fra.me.meth = LOCATE_NEW_ReduceAction669_parser___ReduceAction669___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11283 */
+  /* ./parser//parser.nit:11281 */
   fra.me.REG[0] = NEW_ReduceAction669();
   INIT_ATTRIBUTES__ReduceAction669(fra.me.REG[0]);
   parser___ReduceAction669___init(fra.me.REG[0], REGB0, init_table);
@@ -116235,13 +116237,13 @@ val_t NEW_ReduceAction670_parser___ReduceAction670___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11304;
+  fra.me.line = 11302;
   fra.me.meth = LOCATE_NEW_ReduceAction670_parser___ReduceAction670___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11304 */
+  /* ./parser//parser.nit:11302 */
   fra.me.REG[0] = NEW_ReduceAction670();
   INIT_ATTRIBUTES__ReduceAction670(fra.me.REG[0]);
   parser___ReduceAction670___init(fra.me.REG[0], REGB0, init_table);
@@ -116351,13 +116353,13 @@ val_t NEW_ReduceAction673_parser___ReduceAction673___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11321;
+  fra.me.line = 11319;
   fra.me.meth = LOCATE_NEW_ReduceAction673_parser___ReduceAction673___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11321 */
+  /* ./parser//parser.nit:11319 */
   fra.me.REG[0] = NEW_ReduceAction673();
   INIT_ATTRIBUTES__ReduceAction673(fra.me.REG[0]);
   parser___ReduceAction673___init(fra.me.REG[0], REGB0, init_table);
@@ -116467,13 +116469,13 @@ val_t NEW_ReduceAction674_parser___ReduceAction674___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11342;
+  fra.me.line = 11340;
   fra.me.meth = LOCATE_NEW_ReduceAction674_parser___ReduceAction674___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11342 */
+  /* ./parser//parser.nit:11340 */
   fra.me.REG[0] = NEW_ReduceAction674();
   INIT_ATTRIBUTES__ReduceAction674(fra.me.REG[0]);
   parser___ReduceAction674___init(fra.me.REG[0], REGB0, init_table);
@@ -116583,13 +116585,13 @@ val_t NEW_ReduceAction675_parser___ReduceAction675___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11359;
+  fra.me.line = 11357;
   fra.me.meth = LOCATE_NEW_ReduceAction675_parser___ReduceAction675___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11359 */
+  /* ./parser//parser.nit:11357 */
   fra.me.REG[0] = NEW_ReduceAction675();
   INIT_ATTRIBUTES__ReduceAction675(fra.me.REG[0]);
   parser___ReduceAction675___init(fra.me.REG[0], REGB0, init_table);
@@ -116699,13 +116701,13 @@ val_t NEW_ReduceAction676_parser___ReduceAction676___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11380;
+  fra.me.line = 11378;
   fra.me.meth = LOCATE_NEW_ReduceAction676_parser___ReduceAction676___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11380 */
+  /* ./parser//parser.nit:11378 */
   fra.me.REG[0] = NEW_ReduceAction676();
   INIT_ATTRIBUTES__ReduceAction676(fra.me.REG[0]);
   parser___ReduceAction676___init(fra.me.REG[0], REGB0, init_table);
@@ -116815,13 +116817,13 @@ val_t NEW_ReduceAction677_parser___ReduceAction677___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11397;
+  fra.me.line = 11395;
   fra.me.meth = LOCATE_NEW_ReduceAction677_parser___ReduceAction677___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11397 */
+  /* ./parser//parser.nit:11395 */
   fra.me.REG[0] = NEW_ReduceAction677();
   INIT_ATTRIBUTES__ReduceAction677(fra.me.REG[0]);
   parser___ReduceAction677___init(fra.me.REG[0], REGB0, init_table);
@@ -116931,13 +116933,13 @@ val_t NEW_ReduceAction678_parser___ReduceAction678___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11418;
+  fra.me.line = 11416;
   fra.me.meth = LOCATE_NEW_ReduceAction678_parser___ReduceAction678___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11418 */
+  /* ./parser//parser.nit:11416 */
   fra.me.REG[0] = NEW_ReduceAction678();
   INIT_ATTRIBUTES__ReduceAction678(fra.me.REG[0]);
   parser___ReduceAction678___init(fra.me.REG[0], REGB0, init_table);
@@ -117047,13 +117049,13 @@ val_t NEW_ReduceAction680_parser___ReduceAction680___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11439;
+  fra.me.line = 11437;
   fra.me.meth = LOCATE_NEW_ReduceAction680_parser___ReduceAction680___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11439 */
+  /* ./parser//parser.nit:11437 */
   fra.me.REG[0] = NEW_ReduceAction680();
   INIT_ATTRIBUTES__ReduceAction680(fra.me.REG[0]);
   parser___ReduceAction680___init(fra.me.REG[0], REGB0, init_table);
@@ -117163,13 +117165,13 @@ val_t NEW_ReduceAction682_parser___ReduceAction682___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11460;
+  fra.me.line = 11458;
   fra.me.meth = LOCATE_NEW_ReduceAction682_parser___ReduceAction682___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11460 */
+  /* ./parser//parser.nit:11458 */
   fra.me.REG[0] = NEW_ReduceAction682();
   INIT_ATTRIBUTES__ReduceAction682(fra.me.REG[0]);
   parser___ReduceAction682___init(fra.me.REG[0], REGB0, init_table);
@@ -117279,13 +117281,13 @@ val_t NEW_ReduceAction684_parser___ReduceAction684___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11480;
+  fra.me.line = 11478;
   fra.me.meth = LOCATE_NEW_ReduceAction684_parser___ReduceAction684___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11480 */
+  /* ./parser//parser.nit:11478 */
   fra.me.REG[0] = NEW_ReduceAction684();
   INIT_ATTRIBUTES__ReduceAction684(fra.me.REG[0]);
   parser___ReduceAction684___init(fra.me.REG[0], REGB0, init_table);
@@ -117395,13 +117397,13 @@ val_t NEW_ReduceAction688_parser___ReduceAction688___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11501;
+  fra.me.line = 11499;
   fra.me.meth = LOCATE_NEW_ReduceAction688_parser___ReduceAction688___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11501 */
+  /* ./parser//parser.nit:11499 */
   fra.me.REG[0] = NEW_ReduceAction688();
   INIT_ATTRIBUTES__ReduceAction688(fra.me.REG[0]);
   parser___ReduceAction688___init(fra.me.REG[0], REGB0, init_table);
@@ -117511,13 +117513,13 @@ val_t NEW_ReduceAction689_parser___ReduceAction689___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11518;
+  fra.me.line = 11516;
   fra.me.meth = LOCATE_NEW_ReduceAction689_parser___ReduceAction689___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11518 */
+  /* ./parser//parser.nit:11516 */
   fra.me.REG[0] = NEW_ReduceAction689();
   INIT_ATTRIBUTES__ReduceAction689(fra.me.REG[0]);
   parser___ReduceAction689___init(fra.me.REG[0], REGB0, init_table);
@@ -117627,13 +117629,13 @@ val_t NEW_ReduceAction690_parser___ReduceAction690___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11539;
+  fra.me.line = 11537;
   fra.me.meth = LOCATE_NEW_ReduceAction690_parser___ReduceAction690___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11539 */
+  /* ./parser//parser.nit:11537 */
   fra.me.REG[0] = NEW_ReduceAction690();
   INIT_ATTRIBUTES__ReduceAction690(fra.me.REG[0]);
   parser___ReduceAction690___init(fra.me.REG[0], REGB0, init_table);
@@ -117743,13 +117745,13 @@ val_t NEW_ReduceAction691_parser___ReduceAction691___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11556;
+  fra.me.line = 11554;
   fra.me.meth = LOCATE_NEW_ReduceAction691_parser___ReduceAction691___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11556 */
+  /* ./parser//parser.nit:11554 */
   fra.me.REG[0] = NEW_ReduceAction691();
   INIT_ATTRIBUTES__ReduceAction691(fra.me.REG[0]);
   parser___ReduceAction691___init(fra.me.REG[0], REGB0, init_table);
@@ -117859,13 +117861,13 @@ val_t NEW_ReduceAction692_parser___ReduceAction692___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 11577;
+  fra.me.line = 11575;
   fra.me.meth = LOCATE_NEW_ReduceAction692_parser___ReduceAction692___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./parser//parser.nit:11577 */
+  /* ./parser//parser.nit:11575 */
   fra.me.REG[0] = NEW_ReduceAction692();
   INIT_ATTRIBUTES__ReduceAction692(fra.me.REG[0]);
   parser___ReduceAction692___init(fra.me.REG[0], REGB0, init_table);
@@ -118849,8 +118851,8 @@ const classtable_elt_t VFT_MMGlobalClass[67] = {
   {(bigint) abstractmetamodel___MMGlobalClass___is_interface__eq},
   {(bigint) abstractmetamodel___MMGlobalClass___is_abstract},
   {(bigint) abstractmetamodel___MMGlobalClass___is_abstract__eq},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_universal},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_universal__eq},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_enum},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_enum__eq},
   {(bigint) abstractmetamodel___MMGlobalClass___visibility_level},
   {(bigint) abstractmetamodel___MMGlobalClass___visibility_level__eq},
   {(bigint) abstractmetamodel___MMGlobalClass___is_mixin},
@@ -118866,7 +118868,7 @@ const classtable_elt_t VFT_MMGlobalClass[67] = {
 /* 3: Attribute MMGlobalClass::_class_refinement_hierarchy */
 /* 4: Attribute MMGlobalClass::_is_interface */
 /* 5: Attribute MMGlobalClass::_is_abstract */
-/* 6: Attribute MMGlobalClass::_is_universal */
+/* 6: Attribute MMGlobalClass::_is_enum */
 /* 7: Attribute MMGlobalClass::_visibility_level */
 /* 8: Attribute MMGlobalClass::_mixin_of */
 void INIT_ATTRIBUTES__MMGlobalClass(val_t p0){
@@ -118893,7 +118895,7 @@ void INIT_ATTRIBUTES__MMGlobalClass(val_t p0){
   ATTR_abstractmetamodel___MMGlobalClass____is_abstract(fra.me.REG[0]) = REGB0;
   /* ./metamodel//abstractmetamodel.nit:303 */
   REGB0 = TAG_Bool(false);
-  ATTR_abstractmetamodel___MMGlobalClass____is_universal(fra.me.REG[0]) = REGB0;
+  ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0]) = REGB0;
   /* ./metamodel//abstractmetamodel.nit:308 */
   REGB0 = TAG_Int(1);
   ATTR_abstractmetamodel___MMGlobalClass____visibility_level(fra.me.REG[0]) = REGB0;
@@ -118943,10 +118945,10 @@ void CHECKNEW_MMGlobalClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_is_abstract", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_universal(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_universal", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_enum", LOCATE_nitc, 0);
   }
   REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____visibility_level(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -123630,7 +123632,7 @@ const classtable_elt_t VFT_OptionEnum[65] = {
 /* 4: Attribute OptionEnum::_mandatory */
 /* 5: Attribute OptionEnum::_value */
 /* 6: Attribute OptionEnum::_default_value */
-/* 7: Attribute OptionEnum::_enum */
+/* 7: Attribute OptionEnum::_values */
 void INIT_ATTRIBUTES__OptionEnum(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -123663,10 +123665,10 @@ void CHECKNEW_OptionEnum(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____enum(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_enum", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_nitc, 0);
   }
   REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -128596,7 +128598,7 @@ const classtable_elt_t VFT_ASendReassignExpr[108] = {
   {(bigint) 1859 /* 4: ASendReassignExpr < Prod: superclass typecheck marker */},
   {(bigint) 3251 /* 5: ASendReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: ASendReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
   {(bigint) 3443 /* 8: ASendReassignExpr < AAbsSendExpr: superclass typecheck marker */},
   {(bigint) 3459 /* 9: ASendReassignExpr < ASuperInitCall: superclass typecheck marker */},
   {(bigint) 3479 /* 10: ASendReassignExpr < ASendExpr: superclass typecheck marker */},
@@ -137226,14 +137228,14 @@ val_t NEW_EscapableClosure_scope___EscapableClosure___init(val_t p0, val_t p1, v
   return fra.me.REG[3];
 }
 const classtable_elt_t VFT_AEscapeExpr[83] = {
-  {(bigint) 3171 /* 0: Identity */},
+  {(bigint) 3167 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: AEscapeExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: AEscapeExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: AEscapeExpr < Prod: superclass typecheck marker */},
   {(bigint) 2831 /* 5: AEscapeExpr < ALabelable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3171 /* 7: AEscapeExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3167 /* 7: AEscapeExpr < AEscapeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -137773,12 +137775,12 @@ val_t NEW_AAbsControl_parser_nodes___ANode___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_ATypeCheckExpr[79] = {
-  {(bigint) 3003 /* 0: Identity */},
+  {(bigint) 2999 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) 3 /* 2: ATypeCheckExpr < Object: superclass typecheck marker */},
   {(bigint) 275 /* 3: ATypeCheckExpr < ANode: superclass typecheck marker */},
   {(bigint) 1859 /* 4: ATypeCheckExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3003 /* 5: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
   {(bigint) 2847 /* 6: ATypeCheckExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138042,7 +138044,7 @@ val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(val_t p0, val_t p1
   int init_table[2] = {0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 88;
+  fra.me.line = 87;
   fra.me.meth = LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -138052,7 +138054,7 @@ val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   REGB0 = p1;
   fra.me.REG[1] = p2;
-  /* ./primitive_info.nit:88 */
+  /* ./primitive_info.nit:87 */
   fra.me.REG[2] = NEW_PrimitiveInfo();
   INIT_ATTRIBUTES__PrimitiveInfo(fra.me.REG[2]);
   primitive_info___PrimitiveInfo___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
diff --git a/c_src/nitc._tables.h b/c_src/nitc._tables.h
new file mode 100644 (file)
index 0000000..399e820
--- /dev/null
@@ -0,0 +1,1785 @@
+/* This C file is generated by NIT to compile program nitc. */
+#include "abstracttool._sep.h"
+#include "syntax._sep.h"
+#include "mmbuilder._sep.h"
+#include "syntax_base._sep.h"
+#include "parser._sep.h"
+#include "parser_prod._sep.h"
+#include "lexer._sep.h"
+#include "parser_nodes._sep.h"
+#include "location._sep.h"
+#include "standard._sep.h"
+#include "environ._sep.h"
+#include "symbol._sep.h"
+#include "string._sep.h"
+#include "collection._sep.h"
+#include "range._sep.h"
+#include "abstract_collection._sep.h"
+#include "kernel._sep.h"
+#include "list._sep.h"
+#include "sorter._sep.h"
+#include "array._sep.h"
+#include "hash_collection._sep.h"
+#include "hash._sep.h"
+#include "time._sep.h"
+#include "file._sep.h"
+#include "stream._sep.h"
+#include "string_search._sep.h"
+#include "exec._sep.h"
+#include "math._sep.h"
+#include "parser_tables._sep.h"
+#include "mmloader._sep.h"
+#include "metamodel._sep.h"
+#include "vararg._sep.h"
+#include "genericity._sep.h"
+#include "type_formal._sep.h"
+#include "inheritance._sep.h"
+#include "static_type._sep.h"
+#include "abstractmetamodel._sep.h"
+#include "partial_order._sep.h"
+#include "virtualtype._sep.h"
+#include "opts._sep.h"
+#include "icode_generation._sep.h"
+#include "icode._sep.h"
+#include "icode_tools._sep.h"
+#include "icode_builder._sep.h"
+#include "icode_base._sep.h"
+#include "typing._sep.h"
+#include "escape._sep.h"
+#include "control_flow._sep.h"
+#include "primitive_info._sep.h"
+#include "nit_version._sep.h"
+#include "compiling._sep.h"
+#include "icode_generator._sep.h"
+#include "compiling_base._sep.h"
+#include "utils._sep.h"
+#include "program._sep.h"
+#include "compiling_writer._sep.h"
+#include "analysis._sep.h"
+#include "icode_dump._sep.h"
+#include "allocate_iregister_slots._sep.h"
+#include "inline_methods._sep.h"
+#include "cha_analysis._sep.h"
+#include "reachable_method_analysis._sep.h"
+#include "rta_analysis._sep.h"
+#include "instantiated_type_analysis._sep.h"
+#include "reachable_as_init_impl._sep.h"
+#include "reachable_as_init._sep.h"
+#include "reachable_from_init_method_analysis_impl._sep.h"
+#include "reachable_from_init_method_analysis._sep.h"
+#include "dead_method_removal._sep.h"
+#include "inline_get_and_set._sep.h"
+#include "remove_out_of_init_get_test._sep.h"
+#include "compiling_global._sep.h"
+#include "table_computation._sep.h"
+#include "compiling_icode._sep.h"
+#include "nitc._sep.h"
+#include <nit_common.h>
+extern const classtable_elt_t VFT_NitCompiler[];
+extern const classtable_elt_t VFT_Sys[];
+extern const classtable_elt_t VFT_Object[];
+extern const classtable_elt_t VFT_Comparable[];
+extern const classtable_elt_t VFT_Discrete[];
+extern const classtable_elt_t VFT_Bool[];
+extern const classtable_elt_t VFT_Float[];
+extern const classtable_elt_t VFT_Int[];
+extern const classtable_elt_t VFT_Char[];
+extern const classtable_elt_t VFT_Pointer[];
+extern const classtable_elt_t VFT_Collection[];
+extern const classtable_elt_t VFT_NaiveCollection[];
+extern const classtable_elt_t VFT_Iterator[];
+extern const classtable_elt_t VFT_Container[];
+extern const classtable_elt_t VFT_ContainerIterator[];
+extern const classtable_elt_t VFT_RemovableCollection[];
+extern const classtable_elt_t VFT_SimpleCollection[];
+extern const classtable_elt_t VFT_Set[];
+extern const classtable_elt_t VFT_MapRead[];
+extern const classtable_elt_t VFT_Map[];
+extern const classtable_elt_t VFT_MapIterator[];
+extern const classtable_elt_t VFT_SequenceRead[];
+extern const classtable_elt_t VFT_Sequence[];
+extern const classtable_elt_t VFT_IndexedIterator[];
+extern const classtable_elt_t VFT_CoupleMap[];
+extern const classtable_elt_t VFT_CoupleMapIterator[];
+extern const classtable_elt_t VFT_Couple[];
+extern const classtable_elt_t VFT_Range[];
+extern const classtable_elt_t VFT_IteratorRange[];
+extern const classtable_elt_t VFT_List[];
+extern const classtable_elt_t VFT_ListIterator[];
+extern const classtable_elt_t VFT_ListNode[];
+extern const classtable_elt_t VFT_AbstractArrayRead[];
+extern const classtable_elt_t VFT_AbstractArray[];
+extern const classtable_elt_t VFT_Array[];
+extern const classtable_elt_t VFT_ArrayIterator[];
+extern const classtable_elt_t VFT_ArraySet[];
+extern const classtable_elt_t VFT_ArraySetIterator[];
+extern const classtable_elt_t VFT_ArrayMap[];
+extern const classtable_elt_t VFT_ArrayCapable[];
+extern const classtable_elt_t VFT_NativeArray[];
+extern const classtable_elt_t VFT_AbstractSorter[];
+extern const classtable_elt_t VFT_ComparableSorter[];
+extern const classtable_elt_t VFT_HashCollection[];
+extern const classtable_elt_t VFT_HashNode[];
+extern const classtable_elt_t VFT_HashMap[];
+extern const classtable_elt_t VFT_HashMapNode[];
+extern const classtable_elt_t VFT_HashMapIterator[];
+extern const classtable_elt_t VFT_HashSet[];
+extern const classtable_elt_t VFT_HashSetNode[];
+extern const classtable_elt_t VFT_HashSetIterator[];
+extern const classtable_elt_t VFT_AbstractString[];
+extern const classtable_elt_t VFT_String[];
+extern const classtable_elt_t VFT_Buffer[];
+extern const classtable_elt_t VFT_NativeString[];
+extern const classtable_elt_t VFT_StringCapable[];
+extern const classtable_elt_t VFT_Symbol[];
+extern const classtable_elt_t VFT_IOS[];
+extern const classtable_elt_t VFT_IStream[];
+extern const classtable_elt_t VFT_OStream[];
+extern const classtable_elt_t VFT_BufferedIStream[];
+extern const classtable_elt_t VFT_IOStream[];
+extern const classtable_elt_t VFT_FDStream[];
+extern const classtable_elt_t VFT_FDIStream[];
+extern const classtable_elt_t VFT_FDOStream[];
+extern const classtable_elt_t VFT_FDIOStream[];
+extern const classtable_elt_t VFT_Pattern[];
+extern const classtable_elt_t VFT_BM_Pattern[];
+extern const classtable_elt_t VFT_Match[];
+extern const classtable_elt_t VFT_FStream[];
+extern const classtable_elt_t VFT_IFStream[];
+extern const classtable_elt_t VFT_OFStream[];
+extern const classtable_elt_t VFT_Stdin[];
+extern const classtable_elt_t VFT_Stdout[];
+extern const classtable_elt_t VFT_Stderr[];
+extern const classtable_elt_t VFT_FileStat[];
+extern const classtable_elt_t VFT_NativeFile[];
+extern const classtable_elt_t VFT_NativeFileCapable[];
+extern const classtable_elt_t VFT_Process[];
+extern const classtable_elt_t VFT_IProcess[];
+extern const classtable_elt_t VFT_OProcess[];
+extern const classtable_elt_t VFT_IOProcess[];
+extern const classtable_elt_t VFT_NativeProcess[];
+extern const classtable_elt_t VFT_Location[];
+extern const classtable_elt_t VFT_ANode[];
+extern const classtable_elt_t VFT_Token[];
+extern const classtable_elt_t VFT_Prod[];
+extern const classtable_elt_t VFT_TEol[];
+extern const classtable_elt_t VFT_TComment[];
+extern const classtable_elt_t VFT_TKwpackage[];
+extern const classtable_elt_t VFT_TKwimport[];
+extern const classtable_elt_t VFT_TKwclass[];
+extern const classtable_elt_t VFT_TKwabstract[];
+extern const classtable_elt_t VFT_TKwinterface[];
+extern const classtable_elt_t VFT_TKwuniversal[];
+extern const classtable_elt_t VFT_TKwspecial[];
+extern const classtable_elt_t VFT_TKwend[];
+extern const classtable_elt_t VFT_TKwmeth[];
+extern const classtable_elt_t VFT_TKwtype[];
+extern const classtable_elt_t VFT_TKwinit[];
+extern const classtable_elt_t VFT_TKwredef[];
+extern const classtable_elt_t VFT_TKwis[];
+extern const classtable_elt_t VFT_TKwdo[];
+extern const classtable_elt_t VFT_TKwreadable[];
+extern const classtable_elt_t VFT_TKwwritable[];
+extern const classtable_elt_t VFT_TKwvar[];
+extern const classtable_elt_t VFT_TKwintern[];
+extern const classtable_elt_t VFT_TKwextern[];
+extern const classtable_elt_t VFT_TKwprotected[];
+extern const classtable_elt_t VFT_TKwprivate[];
+extern const classtable_elt_t VFT_TKwintrude[];
+extern const classtable_elt_t VFT_TKwif[];
+extern const classtable_elt_t VFT_TKwthen[];
+extern const classtable_elt_t VFT_TKwelse[];
+extern const classtable_elt_t VFT_TKwwhile[];
+extern const classtable_elt_t VFT_TKwloop[];
+extern const classtable_elt_t VFT_TKwfor[];
+extern const classtable_elt_t VFT_TKwin[];
+extern const classtable_elt_t VFT_TKwand[];
+extern const classtable_elt_t VFT_TKwor[];
+extern const classtable_elt_t VFT_TKwnot[];
+extern const classtable_elt_t VFT_TKwreturn[];
+extern const classtable_elt_t VFT_TKwcontinue[];
+extern const classtable_elt_t VFT_TKwbreak[];
+extern const classtable_elt_t VFT_TKwabort[];
+extern const classtable_elt_t VFT_TKwassert[];
+extern const classtable_elt_t VFT_TKwnew[];
+extern const classtable_elt_t VFT_TKwisa[];
+extern const classtable_elt_t VFT_TKwonce[];
+extern const classtable_elt_t VFT_TKwsuper[];
+extern const classtable_elt_t VFT_TKwself[];
+extern const classtable_elt_t VFT_TKwtrue[];
+extern const classtable_elt_t VFT_TKwfalse[];
+extern const classtable_elt_t VFT_TKwnull[];
+extern const classtable_elt_t VFT_TKwas[];
+extern const classtable_elt_t VFT_TKwnullable[];
+extern const classtable_elt_t VFT_TKwisset[];
+extern const classtable_elt_t VFT_TKwlabel[];
+extern const classtable_elt_t VFT_TOpar[];
+extern const classtable_elt_t VFT_TCpar[];
+extern const classtable_elt_t VFT_TObra[];
+extern const classtable_elt_t VFT_TCbra[];
+extern const classtable_elt_t VFT_TComma[];
+extern const classtable_elt_t VFT_TColumn[];
+extern const classtable_elt_t VFT_TQuad[];
+extern const classtable_elt_t VFT_TAssign[];
+extern const classtable_elt_t VFT_TPluseq[];
+extern const classtable_elt_t VFT_TMinuseq[];
+extern const classtable_elt_t VFT_TDotdotdot[];
+extern const classtable_elt_t VFT_TDotdot[];
+extern const classtable_elt_t VFT_TDot[];
+extern const classtable_elt_t VFT_TPlus[];
+extern const classtable_elt_t VFT_TMinus[];
+extern const classtable_elt_t VFT_TStar[];
+extern const classtable_elt_t VFT_TSlash[];
+extern const classtable_elt_t VFT_TPercent[];
+extern const classtable_elt_t VFT_TEq[];
+extern const classtable_elt_t VFT_TNe[];
+extern const classtable_elt_t VFT_TLt[];
+extern const classtable_elt_t VFT_TLe[];
+extern const classtable_elt_t VFT_TGt[];
+extern const classtable_elt_t VFT_TGe[];
+extern const classtable_elt_t VFT_TStarship[];
+extern const classtable_elt_t VFT_TBang[];
+extern const classtable_elt_t VFT_TClassid[];
+extern const classtable_elt_t VFT_TId[];
+extern const classtable_elt_t VFT_TAttrid[];
+extern const classtable_elt_t VFT_TNumber[];
+extern const classtable_elt_t VFT_TFloat[];
+extern const classtable_elt_t VFT_TChar[];
+extern const classtable_elt_t VFT_TString[];
+extern const classtable_elt_t VFT_TStartString[];
+extern const classtable_elt_t VFT_TMidString[];
+extern const classtable_elt_t VFT_TEndString[];
+extern const classtable_elt_t VFT_EOF[];
+extern const classtable_elt_t VFT_AError[];
+extern const classtable_elt_t VFT_AModule[];
+extern const classtable_elt_t VFT_APackagedecl[];
+extern const classtable_elt_t VFT_AImport[];
+extern const classtable_elt_t VFT_AStdImport[];
+extern const classtable_elt_t VFT_ANoImport[];
+extern const classtable_elt_t VFT_AVisibility[];
+extern const classtable_elt_t VFT_APublicVisibility[];
+extern const classtable_elt_t VFT_APrivateVisibility[];
+extern const classtable_elt_t VFT_AProtectedVisibility[];
+extern const classtable_elt_t VFT_AIntrudeVisibility[];
+extern const classtable_elt_t VFT_AClassdef[];
+extern const classtable_elt_t VFT_AStdClassdef[];
+extern const classtable_elt_t VFT_ATopClassdef[];
+extern const classtable_elt_t VFT_AMainClassdef[];
+extern const classtable_elt_t VFT_AClasskind[];
+extern const classtable_elt_t VFT_AConcreteClasskind[];
+extern const classtable_elt_t VFT_AAbstractClasskind[];
+extern const classtable_elt_t VFT_AInterfaceClasskind[];
+extern const classtable_elt_t VFT_AUniversalClasskind[];
+extern const classtable_elt_t VFT_AFormaldef[];
+extern const classtable_elt_t VFT_ASuperclass[];
+extern const classtable_elt_t VFT_APropdef[];
+extern const classtable_elt_t VFT_AAttrPropdef[];
+extern const classtable_elt_t VFT_AMethPropdef[];
+extern const classtable_elt_t VFT_ADeferredMethPropdef[];
+extern const classtable_elt_t VFT_AInternMethPropdef[];
+extern const classtable_elt_t VFT_AExternMethPropdef[];
+extern const classtable_elt_t VFT_AConcreteMethPropdef[];
+extern const classtable_elt_t VFT_AConcreteInitPropdef[];
+extern const classtable_elt_t VFT_AMainMethPropdef[];
+extern const classtable_elt_t VFT_ATypePropdef[];
+extern const classtable_elt_t VFT_AAble[];
+extern const classtable_elt_t VFT_AReadAble[];
+extern const classtable_elt_t VFT_AWriteAble[];
+extern const classtable_elt_t VFT_AMethid[];
+extern const classtable_elt_t VFT_AIdMethid[];
+extern const classtable_elt_t VFT_APlusMethid[];
+extern const classtable_elt_t VFT_AMinusMethid[];
+extern const classtable_elt_t VFT_AStarMethid[];
+extern const classtable_elt_t VFT_ASlashMethid[];
+extern const classtable_elt_t VFT_APercentMethid[];
+extern const classtable_elt_t VFT_AEqMethid[];
+extern const classtable_elt_t VFT_ANeMethid[];
+extern const classtable_elt_t VFT_ALeMethid[];
+extern const classtable_elt_t VFT_AGeMethid[];
+extern const classtable_elt_t VFT_ALtMethid[];
+extern const classtable_elt_t VFT_AGtMethid[];
+extern const classtable_elt_t VFT_ABraMethid[];
+extern const classtable_elt_t VFT_AStarshipMethid[];
+extern const classtable_elt_t VFT_AAssignMethid[];
+extern const classtable_elt_t VFT_ABraassignMethid[];
+extern const classtable_elt_t VFT_ASignature[];
+extern const classtable_elt_t VFT_AParam[];
+extern const classtable_elt_t VFT_AClosureDecl[];
+extern const classtable_elt_t VFT_AType[];
+extern const classtable_elt_t VFT_ALabel[];
+extern const classtable_elt_t VFT_AExpr[];
+extern const classtable_elt_t VFT_ABlockExpr[];
+extern const classtable_elt_t VFT_AVardeclExpr[];
+extern const classtable_elt_t VFT_AReturnExpr[];
+extern const classtable_elt_t VFT_ALabelable[];
+extern const classtable_elt_t VFT_ABreakExpr[];
+extern const classtable_elt_t VFT_AAbortExpr[];
+extern const classtable_elt_t VFT_AContinueExpr[];
+extern const classtable_elt_t VFT_ADoExpr[];
+extern const classtable_elt_t VFT_AIfExpr[];
+extern const classtable_elt_t VFT_AIfexprExpr[];
+extern const classtable_elt_t VFT_AWhileExpr[];
+extern const classtable_elt_t VFT_ALoopExpr[];
+extern const classtable_elt_t VFT_AForExpr[];
+extern const classtable_elt_t VFT_AAssertExpr[];
+extern const classtable_elt_t VFT_AAssignFormExpr[];
+extern const classtable_elt_t VFT_AReassignFormExpr[];
+extern const classtable_elt_t VFT_AOnceExpr[];
+extern const classtable_elt_t VFT_ASendExpr[];
+extern const classtable_elt_t VFT_ABinopExpr[];
+extern const classtable_elt_t VFT_ABoolExpr[];
+extern const classtable_elt_t VFT_AOrExpr[];
+extern const classtable_elt_t VFT_AAndExpr[];
+extern const classtable_elt_t VFT_ANotExpr[];
+extern const classtable_elt_t VFT_AEqExpr[];
+extern const classtable_elt_t VFT_AEeExpr[];
+extern const classtable_elt_t VFT_ANeExpr[];
+extern const classtable_elt_t VFT_ALtExpr[];
+extern const classtable_elt_t VFT_ALeExpr[];
+extern const classtable_elt_t VFT_AGtExpr[];
+extern const classtable_elt_t VFT_AGeExpr[];
+extern const classtable_elt_t VFT_AIsaExpr[];
+extern const classtable_elt_t VFT_APlusExpr[];
+extern const classtable_elt_t VFT_AMinusExpr[];
+extern const classtable_elt_t VFT_AStarshipExpr[];
+extern const classtable_elt_t VFT_AStarExpr[];
+extern const classtable_elt_t VFT_ASlashExpr[];
+extern const classtable_elt_t VFT_APercentExpr[];
+extern const classtable_elt_t VFT_AUminusExpr[];
+extern const classtable_elt_t VFT_ANewExpr[];
+extern const classtable_elt_t VFT_AAttrFormExpr[];
+extern const classtable_elt_t VFT_AAttrExpr[];
+extern const classtable_elt_t VFT_AAttrAssignExpr[];
+extern const classtable_elt_t VFT_ACallFormExpr[];
+extern const classtable_elt_t VFT_AAttrReassignExpr[];
+extern const classtable_elt_t VFT_ACallExpr[];
+extern const classtable_elt_t VFT_ACallAssignExpr[];
+extern const classtable_elt_t VFT_ACallReassignExpr[];
+extern const classtable_elt_t VFT_ASuperExpr[];
+extern const classtable_elt_t VFT_AInitExpr[];
+extern const classtable_elt_t VFT_ABraFormExpr[];
+extern const classtable_elt_t VFT_ABraExpr[];
+extern const classtable_elt_t VFT_ABraAssignExpr[];
+extern const classtable_elt_t VFT_AVarFormExpr[];
+extern const classtable_elt_t VFT_ABraReassignExpr[];
+extern const classtable_elt_t VFT_AClosureCallExpr[];
+extern const classtable_elt_t VFT_AVarExpr[];
+extern const classtable_elt_t VFT_AVarAssignExpr[];
+extern const classtable_elt_t VFT_AVarReassignExpr[];
+extern const classtable_elt_t VFT_ARangeExpr[];
+extern const classtable_elt_t VFT_ACrangeExpr[];
+extern const classtable_elt_t VFT_AOrangeExpr[];
+extern const classtable_elt_t VFT_AArrayExpr[];
+extern const classtable_elt_t VFT_ASelfExpr[];
+extern const classtable_elt_t VFT_AImplicitSelfExpr[];
+extern const classtable_elt_t VFT_ATrueExpr[];
+extern const classtable_elt_t VFT_AFalseExpr[];
+extern const classtable_elt_t VFT_ANullExpr[];
+extern const classtable_elt_t VFT_AIntExpr[];
+extern const classtable_elt_t VFT_AFloatExpr[];
+extern const classtable_elt_t VFT_ACharExpr[];
+extern const classtable_elt_t VFT_AStringFormExpr[];
+extern const classtable_elt_t VFT_AStringExpr[];
+extern const classtable_elt_t VFT_AStartStringExpr[];
+extern const classtable_elt_t VFT_AMidStringExpr[];
+extern const classtable_elt_t VFT_AEndStringExpr[];
+extern const classtable_elt_t VFT_ASuperstringExpr[];
+extern const classtable_elt_t VFT_AParExpr[];
+extern const classtable_elt_t VFT_AProxyExpr[];
+extern const classtable_elt_t VFT_AAsCastExpr[];
+extern const classtable_elt_t VFT_AAsNotnullExpr[];
+extern const classtable_elt_t VFT_AIssetAttrExpr[];
+extern const classtable_elt_t VFT_AAssignOp[];
+extern const classtable_elt_t VFT_APlusAssignOp[];
+extern const classtable_elt_t VFT_AMinusAssignOp[];
+extern const classtable_elt_t VFT_AClosureDef[];
+extern const classtable_elt_t VFT_AClosureId[];
+extern const classtable_elt_t VFT_ASimpleClosureId[];
+extern const classtable_elt_t VFT_ABreakClosureId[];
+extern const classtable_elt_t VFT_AQualified[];
+extern const classtable_elt_t VFT_ADoc[];
+extern const classtable_elt_t VFT_Start[];
+extern const classtable_elt_t VFT_Lexer[];
+extern const classtable_elt_t VFT_Visitor[];
+extern const classtable_elt_t VFT_ParserTable[];
+extern const classtable_elt_t VFT_State[];
+extern const classtable_elt_t VFT_Parser[];
+extern const classtable_elt_t VFT_ComputeProdLocationVisitor[];
+extern const classtable_elt_t VFT_ReduceAction[];
+extern const classtable_elt_t VFT_ReduceAction0[];
+extern const classtable_elt_t VFT_ReduceAction1[];
+extern const classtable_elt_t VFT_ReduceAction2[];
+extern const classtable_elt_t VFT_ReduceAction3[];
+extern const classtable_elt_t VFT_ReduceAction4[];
+extern const classtable_elt_t VFT_ReduceAction5[];
+extern const classtable_elt_t VFT_ReduceAction6[];
+extern const classtable_elt_t VFT_ReduceAction7[];
+extern const classtable_elt_t VFT_ReduceAction8[];
+extern const classtable_elt_t VFT_ReduceAction9[];
+extern const classtable_elt_t VFT_ReduceAction10[];
+extern const classtable_elt_t VFT_ReduceAction11[];
+extern const classtable_elt_t VFT_ReduceAction12[];
+extern const classtable_elt_t VFT_ReduceAction13[];
+extern const classtable_elt_t VFT_ReduceAction14[];
+extern const classtable_elt_t VFT_ReduceAction15[];
+extern const classtable_elt_t VFT_ReduceAction16[];
+extern const classtable_elt_t VFT_ReduceAction17[];
+extern const classtable_elt_t VFT_ReduceAction18[];
+extern const classtable_elt_t VFT_ReduceAction19[];
+extern const classtable_elt_t VFT_ReduceAction20[];
+extern const classtable_elt_t VFT_ReduceAction21[];
+extern const classtable_elt_t VFT_ReduceAction22[];
+extern const classtable_elt_t VFT_ReduceAction23[];
+extern const classtable_elt_t VFT_ReduceAction24[];
+extern const classtable_elt_t VFT_ReduceAction25[];
+extern const classtable_elt_t VFT_ReduceAction26[];
+extern const classtable_elt_t VFT_ReduceAction27[];
+extern const classtable_elt_t VFT_ReduceAction28[];
+extern const classtable_elt_t VFT_ReduceAction29[];
+extern const classtable_elt_t VFT_ReduceAction30[];
+extern const classtable_elt_t VFT_ReduceAction31[];
+extern const classtable_elt_t VFT_ReduceAction32[];
+extern const classtable_elt_t VFT_ReduceAction33[];
+extern const classtable_elt_t VFT_ReduceAction34[];
+extern const classtable_elt_t VFT_ReduceAction35[];
+extern const classtable_elt_t VFT_ReduceAction36[];
+extern const classtable_elt_t VFT_ReduceAction37[];
+extern const classtable_elt_t VFT_ReduceAction38[];
+extern const classtable_elt_t VFT_ReduceAction39[];
+extern const classtable_elt_t VFT_ReduceAction40[];
+extern const classtable_elt_t VFT_ReduceAction41[];
+extern const classtable_elt_t VFT_ReduceAction42[];
+extern const classtable_elt_t VFT_ReduceAction43[];
+extern const classtable_elt_t VFT_ReduceAction44[];
+extern const classtable_elt_t VFT_ReduceAction45[];
+extern const classtable_elt_t VFT_ReduceAction46[];
+extern const classtable_elt_t VFT_ReduceAction47[];
+extern const classtable_elt_t VFT_ReduceAction48[];
+extern const classtable_elt_t VFT_ReduceAction49[];
+extern const classtable_elt_t VFT_ReduceAction50[];
+extern const classtable_elt_t VFT_ReduceAction51[];
+extern const classtable_elt_t VFT_ReduceAction52[];
+extern const classtable_elt_t VFT_ReduceAction53[];
+extern const classtable_elt_t VFT_ReduceAction54[];
+extern const classtable_elt_t VFT_ReduceAction55[];
+extern const classtable_elt_t VFT_ReduceAction56[];
+extern const classtable_elt_t VFT_ReduceAction57[];
+extern const classtable_elt_t VFT_ReduceAction58[];
+extern const classtable_elt_t VFT_ReduceAction59[];
+extern const classtable_elt_t VFT_ReduceAction60[];
+extern const classtable_elt_t VFT_ReduceAction61[];
+extern const classtable_elt_t VFT_ReduceAction62[];
+extern const classtable_elt_t VFT_ReduceAction63[];
+extern const classtable_elt_t VFT_ReduceAction64[];
+extern const classtable_elt_t VFT_ReduceAction65[];
+extern const classtable_elt_t VFT_ReduceAction66[];
+extern const classtable_elt_t VFT_ReduceAction67[];
+extern const classtable_elt_t VFT_ReduceAction68[];
+extern const classtable_elt_t VFT_ReduceAction69[];
+extern const classtable_elt_t VFT_ReduceAction70[];
+extern const classtable_elt_t VFT_ReduceAction71[];
+extern const classtable_elt_t VFT_ReduceAction72[];
+extern const classtable_elt_t VFT_ReduceAction73[];
+extern const classtable_elt_t VFT_ReduceAction74[];
+extern const classtable_elt_t VFT_ReduceAction75[];
+extern const classtable_elt_t VFT_ReduceAction76[];
+extern const classtable_elt_t VFT_ReduceAction77[];
+extern const classtable_elt_t VFT_ReduceAction78[];
+extern const classtable_elt_t VFT_ReduceAction79[];
+extern const classtable_elt_t VFT_ReduceAction80[];
+extern const classtable_elt_t VFT_ReduceAction81[];
+extern const classtable_elt_t VFT_ReduceAction82[];
+extern const classtable_elt_t VFT_ReduceAction83[];
+extern const classtable_elt_t VFT_ReduceAction84[];
+extern const classtable_elt_t VFT_ReduceAction85[];
+extern const classtable_elt_t VFT_ReduceAction86[];
+extern const classtable_elt_t VFT_ReduceAction87[];
+extern const classtable_elt_t VFT_ReduceAction88[];
+extern const classtable_elt_t VFT_ReduceAction89[];
+extern const classtable_elt_t VFT_ReduceAction90[];
+extern const classtable_elt_t VFT_ReduceAction91[];
+extern const classtable_elt_t VFT_ReduceAction92[];
+extern const classtable_elt_t VFT_ReduceAction93[];
+extern const classtable_elt_t VFT_ReduceAction94[];
+extern const classtable_elt_t VFT_ReduceAction95[];
+extern const classtable_elt_t VFT_ReduceAction96[];
+extern const classtable_elt_t VFT_ReduceAction97[];
+extern const classtable_elt_t VFT_ReduceAction98[];
+extern const classtable_elt_t VFT_ReduceAction99[];
+extern const classtable_elt_t VFT_ReduceAction100[];
+extern const classtable_elt_t VFT_ReduceAction101[];
+extern const classtable_elt_t VFT_ReduceAction102[];
+extern const classtable_elt_t VFT_ReduceAction103[];
+extern const classtable_elt_t VFT_ReduceAction104[];
+extern const classtable_elt_t VFT_ReduceAction105[];
+extern const classtable_elt_t VFT_ReduceAction106[];
+extern const classtable_elt_t VFT_ReduceAction107[];
+extern const classtable_elt_t VFT_ReduceAction108[];
+extern const classtable_elt_t VFT_ReduceAction109[];
+extern const classtable_elt_t VFT_ReduceAction110[];
+extern const classtable_elt_t VFT_ReduceAction111[];
+extern const classtable_elt_t VFT_ReduceAction112[];
+extern const classtable_elt_t VFT_ReduceAction113[];
+extern const classtable_elt_t VFT_ReduceAction114[];
+extern const classtable_elt_t VFT_ReduceAction115[];
+extern const classtable_elt_t VFT_ReduceAction116[];
+extern const classtable_elt_t VFT_ReduceAction117[];
+extern const classtable_elt_t VFT_ReduceAction118[];
+extern const classtable_elt_t VFT_ReduceAction119[];
+extern const classtable_elt_t VFT_ReduceAction120[];
+extern const classtable_elt_t VFT_ReduceAction121[];
+extern const classtable_elt_t VFT_ReduceAction122[];
+extern const classtable_elt_t VFT_ReduceAction123[];
+extern const classtable_elt_t VFT_ReduceAction124[];
+extern const classtable_elt_t VFT_ReduceAction125[];
+extern const classtable_elt_t VFT_ReduceAction126[];
+extern const classtable_elt_t VFT_ReduceAction127[];
+extern const classtable_elt_t VFT_ReduceAction128[];
+extern const classtable_elt_t VFT_ReduceAction129[];
+extern const classtable_elt_t VFT_ReduceAction130[];
+extern const classtable_elt_t VFT_ReduceAction131[];
+extern const classtable_elt_t VFT_ReduceAction132[];
+extern const classtable_elt_t VFT_ReduceAction133[];
+extern const classtable_elt_t VFT_ReduceAction134[];
+extern const classtable_elt_t VFT_ReduceAction135[];
+extern const classtable_elt_t VFT_ReduceAction136[];
+extern const classtable_elt_t VFT_ReduceAction137[];
+extern const classtable_elt_t VFT_ReduceAction138[];
+extern const classtable_elt_t VFT_ReduceAction139[];
+extern const classtable_elt_t VFT_ReduceAction140[];
+extern const classtable_elt_t VFT_ReduceAction141[];
+extern const classtable_elt_t VFT_ReduceAction142[];
+extern const classtable_elt_t VFT_ReduceAction143[];
+extern const classtable_elt_t VFT_ReduceAction144[];
+extern const classtable_elt_t VFT_ReduceAction145[];
+extern const classtable_elt_t VFT_ReduceAction146[];
+extern const classtable_elt_t VFT_ReduceAction147[];
+extern const classtable_elt_t VFT_ReduceAction148[];
+extern const classtable_elt_t VFT_ReduceAction149[];
+extern const classtable_elt_t VFT_ReduceAction150[];
+extern const classtable_elt_t VFT_ReduceAction151[];
+extern const classtable_elt_t VFT_ReduceAction152[];
+extern const classtable_elt_t VFT_ReduceAction153[];
+extern const classtable_elt_t VFT_ReduceAction154[];
+extern const classtable_elt_t VFT_ReduceAction155[];
+extern const classtable_elt_t VFT_ReduceAction156[];
+extern const classtable_elt_t VFT_ReduceAction157[];
+extern const classtable_elt_t VFT_ReduceAction158[];
+extern const classtable_elt_t VFT_ReduceAction159[];
+extern const classtable_elt_t VFT_ReduceAction160[];
+extern const classtable_elt_t VFT_ReduceAction161[];
+extern const classtable_elt_t VFT_ReduceAction162[];
+extern const classtable_elt_t VFT_ReduceAction163[];
+extern const classtable_elt_t VFT_ReduceAction164[];
+extern const classtable_elt_t VFT_ReduceAction165[];
+extern const classtable_elt_t VFT_ReduceAction166[];
+extern const classtable_elt_t VFT_ReduceAction167[];
+extern const classtable_elt_t VFT_ReduceAction168[];
+extern const classtable_elt_t VFT_ReduceAction169[];
+extern const classtable_elt_t VFT_ReduceAction170[];
+extern const classtable_elt_t VFT_ReduceAction171[];
+extern const classtable_elt_t VFT_ReduceAction172[];
+extern const classtable_elt_t VFT_ReduceAction173[];
+extern const classtable_elt_t VFT_ReduceAction174[];
+extern const classtable_elt_t VFT_ReduceAction175[];
+extern const classtable_elt_t VFT_ReduceAction176[];
+extern const classtable_elt_t VFT_ReduceAction177[];
+extern const classtable_elt_t VFT_ReduceAction178[];
+extern const classtable_elt_t VFT_ReduceAction179[];
+extern const classtable_elt_t VFT_ReduceAction180[];
+extern const classtable_elt_t VFT_ReduceAction181[];
+extern const classtable_elt_t VFT_ReduceAction182[];
+extern const classtable_elt_t VFT_ReduceAction183[];
+extern const classtable_elt_t VFT_ReduceAction184[];
+extern const classtable_elt_t VFT_ReduceAction185[];
+extern const classtable_elt_t VFT_ReduceAction186[];
+extern const classtable_elt_t VFT_ReduceAction187[];
+extern const classtable_elt_t VFT_ReduceAction188[];
+extern const classtable_elt_t VFT_ReduceAction189[];
+extern const classtable_elt_t VFT_ReduceAction190[];
+extern const classtable_elt_t VFT_ReduceAction191[];
+extern const classtable_elt_t VFT_ReduceAction192[];
+extern const classtable_elt_t VFT_ReduceAction193[];
+extern const classtable_elt_t VFT_ReduceAction194[];
+extern const classtable_elt_t VFT_ReduceAction195[];
+extern const classtable_elt_t VFT_ReduceAction196[];
+extern const classtable_elt_t VFT_ReduceAction197[];
+extern const classtable_elt_t VFT_ReduceAction198[];
+extern const classtable_elt_t VFT_ReduceAction199[];
+extern const classtable_elt_t VFT_ReduceAction200[];
+extern const classtable_elt_t VFT_ReduceAction201[];
+extern const classtable_elt_t VFT_ReduceAction202[];
+extern const classtable_elt_t VFT_ReduceAction203[];
+extern const classtable_elt_t VFT_ReduceAction204[];
+extern const classtable_elt_t VFT_ReduceAction205[];
+extern const classtable_elt_t VFT_ReduceAction206[];
+extern const classtable_elt_t VFT_ReduceAction207[];
+extern const classtable_elt_t VFT_ReduceAction208[];
+extern const classtable_elt_t VFT_ReduceAction209[];
+extern const classtable_elt_t VFT_ReduceAction210[];
+extern const classtable_elt_t VFT_ReduceAction211[];
+extern const classtable_elt_t VFT_ReduceAction212[];
+extern const classtable_elt_t VFT_ReduceAction213[];
+extern const classtable_elt_t VFT_ReduceAction214[];
+extern const classtable_elt_t VFT_ReduceAction215[];
+extern const classtable_elt_t VFT_ReduceAction216[];
+extern const classtable_elt_t VFT_ReduceAction217[];
+extern const classtable_elt_t VFT_ReduceAction218[];
+extern const classtable_elt_t VFT_ReduceAction219[];
+extern const classtable_elt_t VFT_ReduceAction220[];
+extern const classtable_elt_t VFT_ReduceAction221[];
+extern const classtable_elt_t VFT_ReduceAction222[];
+extern const classtable_elt_t VFT_ReduceAction223[];
+extern const classtable_elt_t VFT_ReduceAction224[];
+extern const classtable_elt_t VFT_ReduceAction225[];
+extern const classtable_elt_t VFT_ReduceAction226[];
+extern const classtable_elt_t VFT_ReduceAction227[];
+extern const classtable_elt_t VFT_ReduceAction228[];
+extern const classtable_elt_t VFT_ReduceAction229[];
+extern const classtable_elt_t VFT_ReduceAction230[];
+extern const classtable_elt_t VFT_ReduceAction231[];
+extern const classtable_elt_t VFT_ReduceAction232[];
+extern const classtable_elt_t VFT_ReduceAction233[];
+extern const classtable_elt_t VFT_ReduceAction234[];
+extern const classtable_elt_t VFT_ReduceAction235[];
+extern const classtable_elt_t VFT_ReduceAction236[];
+extern const classtable_elt_t VFT_ReduceAction237[];
+extern const classtable_elt_t VFT_ReduceAction238[];
+extern const classtable_elt_t VFT_ReduceAction239[];
+extern const classtable_elt_t VFT_ReduceAction240[];
+extern const classtable_elt_t VFT_ReduceAction241[];
+extern const classtable_elt_t VFT_ReduceAction242[];
+extern const classtable_elt_t VFT_ReduceAction243[];
+extern const classtable_elt_t VFT_ReduceAction244[];
+extern const classtable_elt_t VFT_ReduceAction245[];
+extern const classtable_elt_t VFT_ReduceAction246[];
+extern const classtable_elt_t VFT_ReduceAction247[];
+extern const classtable_elt_t VFT_ReduceAction248[];
+extern const classtable_elt_t VFT_ReduceAction249[];
+extern const classtable_elt_t VFT_ReduceAction250[];
+extern const classtable_elt_t VFT_ReduceAction251[];
+extern const classtable_elt_t VFT_ReduceAction252[];
+extern const classtable_elt_t VFT_ReduceAction253[];
+extern const classtable_elt_t VFT_ReduceAction254[];
+extern const classtable_elt_t VFT_ReduceAction255[];
+extern const classtable_elt_t VFT_ReduceAction256[];
+extern const classtable_elt_t VFT_ReduceAction257[];
+extern const classtable_elt_t VFT_ReduceAction258[];
+extern const classtable_elt_t VFT_ReduceAction259[];
+extern const classtable_elt_t VFT_ReduceAction260[];
+extern const classtable_elt_t VFT_ReduceAction261[];
+extern const classtable_elt_t VFT_ReduceAction262[];
+extern const classtable_elt_t VFT_ReduceAction263[];
+extern const classtable_elt_t VFT_ReduceAction264[];
+extern const classtable_elt_t VFT_ReduceAction265[];
+extern const classtable_elt_t VFT_ReduceAction266[];
+extern const classtable_elt_t VFT_ReduceAction267[];
+extern const classtable_elt_t VFT_ReduceAction268[];
+extern const classtable_elt_t VFT_ReduceAction269[];
+extern const classtable_elt_t VFT_ReduceAction270[];
+extern const classtable_elt_t VFT_ReduceAction271[];
+extern const classtable_elt_t VFT_ReduceAction272[];
+extern const classtable_elt_t VFT_ReduceAction273[];
+extern const classtable_elt_t VFT_ReduceAction274[];
+extern const classtable_elt_t VFT_ReduceAction275[];
+extern const classtable_elt_t VFT_ReduceAction276[];
+extern const classtable_elt_t VFT_ReduceAction277[];
+extern const classtable_elt_t VFT_ReduceAction278[];
+extern const classtable_elt_t VFT_ReduceAction279[];
+extern const classtable_elt_t VFT_ReduceAction280[];
+extern const classtable_elt_t VFT_ReduceAction281[];
+extern const classtable_elt_t VFT_ReduceAction282[];
+extern const classtable_elt_t VFT_ReduceAction283[];
+extern const classtable_elt_t VFT_ReduceAction284[];
+extern const classtable_elt_t VFT_ReduceAction285[];
+extern const classtable_elt_t VFT_ReduceAction286[];
+extern const classtable_elt_t VFT_ReduceAction287[];
+extern const classtable_elt_t VFT_ReduceAction288[];
+extern const classtable_elt_t VFT_ReduceAction289[];
+extern const classtable_elt_t VFT_ReduceAction290[];
+extern const classtable_elt_t VFT_ReduceAction291[];
+extern const classtable_elt_t VFT_ReduceAction292[];
+extern const classtable_elt_t VFT_ReduceAction293[];
+extern const classtable_elt_t VFT_ReduceAction294[];
+extern const classtable_elt_t VFT_ReduceAction295[];
+extern const classtable_elt_t VFT_ReduceAction296[];
+extern const classtable_elt_t VFT_ReduceAction297[];
+extern const classtable_elt_t VFT_ReduceAction298[];
+extern const classtable_elt_t VFT_ReduceAction299[];
+extern const classtable_elt_t VFT_ReduceAction300[];
+extern const classtable_elt_t VFT_ReduceAction301[];
+extern const classtable_elt_t VFT_ReduceAction302[];
+extern const classtable_elt_t VFT_ReduceAction303[];
+extern const classtable_elt_t VFT_ReduceAction304[];
+extern const classtable_elt_t VFT_ReduceAction305[];
+extern const classtable_elt_t VFT_ReduceAction306[];
+extern const classtable_elt_t VFT_ReduceAction307[];
+extern const classtable_elt_t VFT_ReduceAction308[];
+extern const classtable_elt_t VFT_ReduceAction309[];
+extern const classtable_elt_t VFT_ReduceAction310[];
+extern const classtable_elt_t VFT_ReduceAction311[];
+extern const classtable_elt_t VFT_ReduceAction312[];
+extern const classtable_elt_t VFT_ReduceAction313[];
+extern const classtable_elt_t VFT_ReduceAction314[];
+extern const classtable_elt_t VFT_ReduceAction315[];
+extern const classtable_elt_t VFT_ReduceAction316[];
+extern const classtable_elt_t VFT_ReduceAction317[];
+extern const classtable_elt_t VFT_ReduceAction318[];
+extern const classtable_elt_t VFT_ReduceAction319[];
+extern const classtable_elt_t VFT_ReduceAction320[];
+extern const classtable_elt_t VFT_ReduceAction321[];
+extern const classtable_elt_t VFT_ReduceAction322[];
+extern const classtable_elt_t VFT_ReduceAction323[];
+extern const classtable_elt_t VFT_ReduceAction324[];
+extern const classtable_elt_t VFT_ReduceAction325[];
+extern const classtable_elt_t VFT_ReduceAction326[];
+extern const classtable_elt_t VFT_ReduceAction327[];
+extern const classtable_elt_t VFT_ReduceAction328[];
+extern const classtable_elt_t VFT_ReduceAction329[];
+extern const classtable_elt_t VFT_ReduceAction330[];
+extern const classtable_elt_t VFT_ReduceAction331[];
+extern const classtable_elt_t VFT_ReduceAction332[];
+extern const classtable_elt_t VFT_ReduceAction333[];
+extern const classtable_elt_t VFT_ReduceAction334[];
+extern const classtable_elt_t VFT_ReduceAction335[];
+extern const classtable_elt_t VFT_ReduceAction336[];
+extern const classtable_elt_t VFT_ReduceAction337[];
+extern const classtable_elt_t VFT_ReduceAction338[];
+extern const classtable_elt_t VFT_ReduceAction339[];
+extern const classtable_elt_t VFT_ReduceAction340[];
+extern const classtable_elt_t VFT_ReduceAction341[];
+extern const classtable_elt_t VFT_ReduceAction342[];
+extern const classtable_elt_t VFT_ReduceAction343[];
+extern const classtable_elt_t VFT_ReduceAction344[];
+extern const classtable_elt_t VFT_ReduceAction345[];
+extern const classtable_elt_t VFT_ReduceAction346[];
+extern const classtable_elt_t VFT_ReduceAction347[];
+extern const classtable_elt_t VFT_ReduceAction348[];
+extern const classtable_elt_t VFT_ReduceAction349[];
+extern const classtable_elt_t VFT_ReduceAction350[];
+extern const classtable_elt_t VFT_ReduceAction351[];
+extern const classtable_elt_t VFT_ReduceAction352[];
+extern const classtable_elt_t VFT_ReduceAction353[];
+extern const classtable_elt_t VFT_ReduceAction354[];
+extern const classtable_elt_t VFT_ReduceAction355[];
+extern const classtable_elt_t VFT_ReduceAction356[];
+extern const classtable_elt_t VFT_ReduceAction357[];
+extern const classtable_elt_t VFT_ReduceAction358[];
+extern const classtable_elt_t VFT_ReduceAction359[];
+extern const classtable_elt_t VFT_ReduceAction360[];
+extern const classtable_elt_t VFT_ReduceAction361[];
+extern const classtable_elt_t VFT_ReduceAction362[];
+extern const classtable_elt_t VFT_ReduceAction363[];
+extern const classtable_elt_t VFT_ReduceAction364[];
+extern const classtable_elt_t VFT_ReduceAction365[];
+extern const classtable_elt_t VFT_ReduceAction366[];
+extern const classtable_elt_t VFT_ReduceAction367[];
+extern const classtable_elt_t VFT_ReduceAction368[];
+extern const classtable_elt_t VFT_ReduceAction369[];
+extern const classtable_elt_t VFT_ReduceAction370[];
+extern const classtable_elt_t VFT_ReduceAction371[];
+extern const classtable_elt_t VFT_ReduceAction372[];
+extern const classtable_elt_t VFT_ReduceAction373[];
+extern const classtable_elt_t VFT_ReduceAction374[];
+extern const classtable_elt_t VFT_ReduceAction375[];
+extern const classtable_elt_t VFT_ReduceAction376[];
+extern const classtable_elt_t VFT_ReduceAction377[];
+extern const classtable_elt_t VFT_ReduceAction378[];
+extern const classtable_elt_t VFT_ReduceAction379[];
+extern const classtable_elt_t VFT_ReduceAction380[];
+extern const classtable_elt_t VFT_ReduceAction381[];
+extern const classtable_elt_t VFT_ReduceAction382[];
+extern const classtable_elt_t VFT_ReduceAction383[];
+extern const classtable_elt_t VFT_ReduceAction384[];
+extern const classtable_elt_t VFT_ReduceAction385[];
+extern const classtable_elt_t VFT_ReduceAction386[];
+extern const classtable_elt_t VFT_ReduceAction387[];
+extern const classtable_elt_t VFT_ReduceAction388[];
+extern const classtable_elt_t VFT_ReduceAction389[];
+extern const classtable_elt_t VFT_ReduceAction390[];
+extern const classtable_elt_t VFT_ReduceAction391[];
+extern const classtable_elt_t VFT_ReduceAction392[];
+extern const classtable_elt_t VFT_ReduceAction393[];
+extern const classtable_elt_t VFT_ReduceAction394[];
+extern const classtable_elt_t VFT_ReduceAction395[];
+extern const classtable_elt_t VFT_ReduceAction396[];
+extern const classtable_elt_t VFT_ReduceAction397[];
+extern const classtable_elt_t VFT_ReduceAction398[];
+extern const classtable_elt_t VFT_ReduceAction399[];
+extern const classtable_elt_t VFT_ReduceAction400[];
+extern const classtable_elt_t VFT_ReduceAction401[];
+extern const classtable_elt_t VFT_ReduceAction402[];
+extern const classtable_elt_t VFT_ReduceAction403[];
+extern const classtable_elt_t VFT_ReduceAction404[];
+extern const classtable_elt_t VFT_ReduceAction405[];
+extern const classtable_elt_t VFT_ReduceAction406[];
+extern const classtable_elt_t VFT_ReduceAction407[];
+extern const classtable_elt_t VFT_ReduceAction408[];
+extern const classtable_elt_t VFT_ReduceAction409[];
+extern const classtable_elt_t VFT_ReduceAction410[];
+extern const classtable_elt_t VFT_ReduceAction411[];
+extern const classtable_elt_t VFT_ReduceAction412[];
+extern const classtable_elt_t VFT_ReduceAction413[];
+extern const classtable_elt_t VFT_ReduceAction414[];
+extern const classtable_elt_t VFT_ReduceAction415[];
+extern const classtable_elt_t VFT_ReduceAction416[];
+extern const classtable_elt_t VFT_ReduceAction417[];
+extern const classtable_elt_t VFT_ReduceAction418[];
+extern const classtable_elt_t VFT_ReduceAction419[];
+extern const classtable_elt_t VFT_ReduceAction420[];
+extern const classtable_elt_t VFT_ReduceAction421[];
+extern const classtable_elt_t VFT_ReduceAction422[];
+extern const classtable_elt_t VFT_ReduceAction423[];
+extern const classtable_elt_t VFT_ReduceAction424[];
+extern const classtable_elt_t VFT_ReduceAction425[];
+extern const classtable_elt_t VFT_ReduceAction426[];
+extern const classtable_elt_t VFT_ReduceAction427[];
+extern const classtable_elt_t VFT_ReduceAction428[];
+extern const classtable_elt_t VFT_ReduceAction429[];
+extern const classtable_elt_t VFT_ReduceAction430[];
+extern const classtable_elt_t VFT_ReduceAction431[];
+extern const classtable_elt_t VFT_ReduceAction432[];
+extern const classtable_elt_t VFT_ReduceAction433[];
+extern const classtable_elt_t VFT_ReduceAction434[];
+extern const classtable_elt_t VFT_ReduceAction435[];
+extern const classtable_elt_t VFT_ReduceAction436[];
+extern const classtable_elt_t VFT_ReduceAction437[];
+extern const classtable_elt_t VFT_ReduceAction438[];
+extern const classtable_elt_t VFT_ReduceAction439[];
+extern const classtable_elt_t VFT_ReduceAction440[];
+extern const classtable_elt_t VFT_ReduceAction441[];
+extern const classtable_elt_t VFT_ReduceAction442[];
+extern const classtable_elt_t VFT_ReduceAction443[];
+extern const classtable_elt_t VFT_ReduceAction444[];
+extern const classtable_elt_t VFT_ReduceAction445[];
+extern const classtable_elt_t VFT_ReduceAction446[];
+extern const classtable_elt_t VFT_ReduceAction447[];
+extern const classtable_elt_t VFT_ReduceAction448[];
+extern const classtable_elt_t VFT_ReduceAction449[];
+extern const classtable_elt_t VFT_ReduceAction450[];
+extern const classtable_elt_t VFT_ReduceAction451[];
+extern const classtable_elt_t VFT_ReduceAction452[];
+extern const classtable_elt_t VFT_ReduceAction453[];
+extern const classtable_elt_t VFT_ReduceAction454[];
+extern const classtable_elt_t VFT_ReduceAction455[];
+extern const classtable_elt_t VFT_ReduceAction456[];
+extern const classtable_elt_t VFT_ReduceAction457[];
+extern const classtable_elt_t VFT_ReduceAction458[];
+extern const classtable_elt_t VFT_ReduceAction459[];
+extern const classtable_elt_t VFT_ReduceAction460[];
+extern const classtable_elt_t VFT_ReduceAction461[];
+extern const classtable_elt_t VFT_ReduceAction462[];
+extern const classtable_elt_t VFT_ReduceAction463[];
+extern const classtable_elt_t VFT_ReduceAction464[];
+extern const classtable_elt_t VFT_ReduceAction465[];
+extern const classtable_elt_t VFT_ReduceAction466[];
+extern const classtable_elt_t VFT_ReduceAction467[];
+extern const classtable_elt_t VFT_ReduceAction468[];
+extern const classtable_elt_t VFT_ReduceAction469[];
+extern const classtable_elt_t VFT_ReduceAction470[];
+extern const classtable_elt_t VFT_ReduceAction471[];
+extern const classtable_elt_t VFT_ReduceAction472[];
+extern const classtable_elt_t VFT_ReduceAction473[];
+extern const classtable_elt_t VFT_ReduceAction474[];
+extern const classtable_elt_t VFT_ReduceAction475[];
+extern const classtable_elt_t VFT_ReduceAction476[];
+extern const classtable_elt_t VFT_ReduceAction477[];
+extern const classtable_elt_t VFT_ReduceAction478[];
+extern const classtable_elt_t VFT_ReduceAction479[];
+extern const classtable_elt_t VFT_ReduceAction480[];
+extern const classtable_elt_t VFT_ReduceAction481[];
+extern const classtable_elt_t VFT_ReduceAction482[];
+extern const classtable_elt_t VFT_ReduceAction483[];
+extern const classtable_elt_t VFT_ReduceAction484[];
+extern const classtable_elt_t VFT_ReduceAction485[];
+extern const classtable_elt_t VFT_ReduceAction486[];
+extern const classtable_elt_t VFT_ReduceAction487[];
+extern const classtable_elt_t VFT_ReduceAction488[];
+extern const classtable_elt_t VFT_ReduceAction489[];
+extern const classtable_elt_t VFT_ReduceAction490[];
+extern const classtable_elt_t VFT_ReduceAction491[];
+extern const classtable_elt_t VFT_ReduceAction492[];
+extern const classtable_elt_t VFT_ReduceAction493[];
+extern const classtable_elt_t VFT_ReduceAction494[];
+extern const classtable_elt_t VFT_ReduceAction495[];
+extern const classtable_elt_t VFT_ReduceAction496[];
+extern const classtable_elt_t VFT_ReduceAction497[];
+extern const classtable_elt_t VFT_ReduceAction498[];
+extern const classtable_elt_t VFT_ReduceAction499[];
+extern const classtable_elt_t VFT_ReduceAction500[];
+extern const classtable_elt_t VFT_ReduceAction501[];
+extern const classtable_elt_t VFT_ReduceAction502[];
+extern const classtable_elt_t VFT_ReduceAction503[];
+extern const classtable_elt_t VFT_ReduceAction504[];
+extern const classtable_elt_t VFT_ReduceAction505[];
+extern const classtable_elt_t VFT_ReduceAction506[];
+extern const classtable_elt_t VFT_ReduceAction507[];
+extern const classtable_elt_t VFT_ReduceAction508[];
+extern const classtable_elt_t VFT_ReduceAction509[];
+extern const classtable_elt_t VFT_ReduceAction510[];
+extern const classtable_elt_t VFT_ReduceAction511[];
+extern const classtable_elt_t VFT_ReduceAction512[];
+extern const classtable_elt_t VFT_ReduceAction513[];
+extern const classtable_elt_t VFT_ReduceAction514[];
+extern const classtable_elt_t VFT_ReduceAction515[];
+extern const classtable_elt_t VFT_ReduceAction516[];
+extern const classtable_elt_t VFT_ReduceAction517[];
+extern const classtable_elt_t VFT_ReduceAction518[];
+extern const classtable_elt_t VFT_ReduceAction519[];
+extern const classtable_elt_t VFT_ReduceAction520[];
+extern const classtable_elt_t VFT_ReduceAction521[];
+extern const classtable_elt_t VFT_ReduceAction522[];
+extern const classtable_elt_t VFT_ReduceAction523[];
+extern const classtable_elt_t VFT_ReduceAction524[];
+extern const classtable_elt_t VFT_ReduceAction525[];
+extern const classtable_elt_t VFT_ReduceAction526[];
+extern const classtable_elt_t VFT_ReduceAction527[];
+extern const classtable_elt_t VFT_ReduceAction528[];
+extern const classtable_elt_t VFT_ReduceAction529[];
+extern const classtable_elt_t VFT_ReduceAction530[];
+extern const classtable_elt_t VFT_ReduceAction531[];
+extern const classtable_elt_t VFT_ReduceAction532[];
+extern const classtable_elt_t VFT_ReduceAction533[];
+extern const classtable_elt_t VFT_ReduceAction534[];
+extern const classtable_elt_t VFT_ReduceAction535[];
+extern const classtable_elt_t VFT_ReduceAction536[];
+extern const classtable_elt_t VFT_ReduceAction537[];
+extern const classtable_elt_t VFT_ReduceAction538[];
+extern const classtable_elt_t VFT_ReduceAction539[];
+extern const classtable_elt_t VFT_ReduceAction540[];
+extern const classtable_elt_t VFT_ReduceAction541[];
+extern const classtable_elt_t VFT_ReduceAction542[];
+extern const classtable_elt_t VFT_ReduceAction543[];
+extern const classtable_elt_t VFT_ReduceAction544[];
+extern const classtable_elt_t VFT_ReduceAction545[];
+extern const classtable_elt_t VFT_ReduceAction546[];
+extern const classtable_elt_t VFT_ReduceAction547[];
+extern const classtable_elt_t VFT_ReduceAction548[];
+extern const classtable_elt_t VFT_ReduceAction549[];
+extern const classtable_elt_t VFT_ReduceAction550[];
+extern const classtable_elt_t VFT_ReduceAction551[];
+extern const classtable_elt_t VFT_ReduceAction552[];
+extern const classtable_elt_t VFT_ReduceAction553[];
+extern const classtable_elt_t VFT_ReduceAction554[];
+extern const classtable_elt_t VFT_ReduceAction555[];
+extern const classtable_elt_t VFT_ReduceAction556[];
+extern const classtable_elt_t VFT_ReduceAction557[];
+extern const classtable_elt_t VFT_ReduceAction558[];
+extern const classtable_elt_t VFT_ReduceAction559[];
+extern const classtable_elt_t VFT_ReduceAction560[];
+extern const classtable_elt_t VFT_ReduceAction561[];
+extern const classtable_elt_t VFT_ReduceAction562[];
+extern const classtable_elt_t VFT_ReduceAction563[];
+extern const classtable_elt_t VFT_ReduceAction564[];
+extern const classtable_elt_t VFT_ReduceAction565[];
+extern const classtable_elt_t VFT_ReduceAction566[];
+extern const classtable_elt_t VFT_ReduceAction567[];
+extern const classtable_elt_t VFT_ReduceAction568[];
+extern const classtable_elt_t VFT_ReduceAction569[];
+extern const classtable_elt_t VFT_ReduceAction570[];
+extern const classtable_elt_t VFT_ReduceAction571[];
+extern const classtable_elt_t VFT_ReduceAction572[];
+extern const classtable_elt_t VFT_ReduceAction573[];
+extern const classtable_elt_t VFT_ReduceAction574[];
+extern const classtable_elt_t VFT_ReduceAction575[];
+extern const classtable_elt_t VFT_ReduceAction576[];
+extern const classtable_elt_t VFT_ReduceAction577[];
+extern const classtable_elt_t VFT_ReduceAction578[];
+extern const classtable_elt_t VFT_ReduceAction579[];
+extern const classtable_elt_t VFT_ReduceAction580[];
+extern const classtable_elt_t VFT_ReduceAction581[];
+extern const classtable_elt_t VFT_ReduceAction582[];
+extern const classtable_elt_t VFT_ReduceAction583[];
+extern const classtable_elt_t VFT_ReduceAction584[];
+extern const classtable_elt_t VFT_ReduceAction585[];
+extern const classtable_elt_t VFT_ReduceAction586[];
+extern const classtable_elt_t VFT_ReduceAction587[];
+extern const classtable_elt_t VFT_ReduceAction588[];
+extern const classtable_elt_t VFT_ReduceAction589[];
+extern const classtable_elt_t VFT_ReduceAction590[];
+extern const classtable_elt_t VFT_ReduceAction591[];
+extern const classtable_elt_t VFT_ReduceAction592[];
+extern const classtable_elt_t VFT_ReduceAction593[];
+extern const classtable_elt_t VFT_ReduceAction594[];
+extern const classtable_elt_t VFT_ReduceAction595[];
+extern const classtable_elt_t VFT_ReduceAction596[];
+extern const classtable_elt_t VFT_ReduceAction597[];
+extern const classtable_elt_t VFT_ReduceAction598[];
+extern const classtable_elt_t VFT_ReduceAction599[];
+extern const classtable_elt_t VFT_ReduceAction600[];
+extern const classtable_elt_t VFT_ReduceAction601[];
+extern const classtable_elt_t VFT_ReduceAction602[];
+extern const classtable_elt_t VFT_ReduceAction603[];
+extern const classtable_elt_t VFT_ReduceAction604[];
+extern const classtable_elt_t VFT_ReduceAction605[];
+extern const classtable_elt_t VFT_ReduceAction606[];
+extern const classtable_elt_t VFT_ReduceAction607[];
+extern const classtable_elt_t VFT_ReduceAction608[];
+extern const classtable_elt_t VFT_ReduceAction609[];
+extern const classtable_elt_t VFT_ReduceAction610[];
+extern const classtable_elt_t VFT_ReduceAction611[];
+extern const classtable_elt_t VFT_ReduceAction612[];
+extern const classtable_elt_t VFT_ReduceAction613[];
+extern const classtable_elt_t VFT_ReduceAction614[];
+extern const classtable_elt_t VFT_ReduceAction615[];
+extern const classtable_elt_t VFT_ReduceAction616[];
+extern const classtable_elt_t VFT_ReduceAction617[];
+extern const classtable_elt_t VFT_ReduceAction618[];
+extern const classtable_elt_t VFT_ReduceAction619[];
+extern const classtable_elt_t VFT_ReduceAction620[];
+extern const classtable_elt_t VFT_ReduceAction621[];
+extern const classtable_elt_t VFT_ReduceAction622[];
+extern const classtable_elt_t VFT_ReduceAction623[];
+extern const classtable_elt_t VFT_ReduceAction624[];
+extern const classtable_elt_t VFT_ReduceAction625[];
+extern const classtable_elt_t VFT_ReduceAction626[];
+extern const classtable_elt_t VFT_ReduceAction627[];
+extern const classtable_elt_t VFT_ReduceAction628[];
+extern const classtable_elt_t VFT_ReduceAction629[];
+extern const classtable_elt_t VFT_ReduceAction630[];
+extern const classtable_elt_t VFT_ReduceAction631[];
+extern const classtable_elt_t VFT_ReduceAction632[];
+extern const classtable_elt_t VFT_ReduceAction633[];
+extern const classtable_elt_t VFT_ReduceAction634[];
+extern const classtable_elt_t VFT_ReduceAction635[];
+extern const classtable_elt_t VFT_ReduceAction636[];
+extern const classtable_elt_t VFT_ReduceAction637[];
+extern const classtable_elt_t VFT_ReduceAction638[];
+extern const classtable_elt_t VFT_ReduceAction639[];
+extern const classtable_elt_t VFT_ReduceAction640[];
+extern const classtable_elt_t VFT_ReduceAction641[];
+extern const classtable_elt_t VFT_ReduceAction642[];
+extern const classtable_elt_t VFT_ReduceAction643[];
+extern const classtable_elt_t VFT_ReduceAction644[];
+extern const classtable_elt_t VFT_ReduceAction645[];
+extern const classtable_elt_t VFT_ReduceAction646[];
+extern const classtable_elt_t VFT_ReduceAction647[];
+extern const classtable_elt_t VFT_ReduceAction648[];
+extern const classtable_elt_t VFT_ReduceAction649[];
+extern const classtable_elt_t VFT_ReduceAction650[];
+extern const classtable_elt_t VFT_ReduceAction651[];
+extern const classtable_elt_t VFT_ReduceAction652[];
+extern const classtable_elt_t VFT_ReduceAction653[];
+extern const classtable_elt_t VFT_ReduceAction654[];
+extern const classtable_elt_t VFT_ReduceAction655[];
+extern const classtable_elt_t VFT_ReduceAction656[];
+extern const classtable_elt_t VFT_ReduceAction657[];
+extern const classtable_elt_t VFT_ReduceAction658[];
+extern const classtable_elt_t VFT_ReduceAction659[];
+extern const classtable_elt_t VFT_ReduceAction660[];
+extern const classtable_elt_t VFT_ReduceAction661[];
+extern const classtable_elt_t VFT_ReduceAction662[];
+extern const classtable_elt_t VFT_ReduceAction663[];
+extern const classtable_elt_t VFT_ReduceAction664[];
+extern const classtable_elt_t VFT_ReduceAction665[];
+extern const classtable_elt_t VFT_ReduceAction666[];
+extern const classtable_elt_t VFT_ReduceAction667[];
+extern const classtable_elt_t VFT_ReduceAction668[];
+extern const classtable_elt_t VFT_ReduceAction669[];
+extern const classtable_elt_t VFT_ReduceAction670[];
+extern const classtable_elt_t VFT_ReduceAction671[];
+extern const classtable_elt_t VFT_ReduceAction672[];
+extern const classtable_elt_t VFT_ReduceAction673[];
+extern const classtable_elt_t VFT_ReduceAction674[];
+extern const classtable_elt_t VFT_ReduceAction675[];
+extern const classtable_elt_t VFT_ReduceAction676[];
+extern const classtable_elt_t VFT_ReduceAction677[];
+extern const classtable_elt_t VFT_ReduceAction678[];
+extern const classtable_elt_t VFT_ReduceAction679[];
+extern const classtable_elt_t VFT_ReduceAction680[];
+extern const classtable_elt_t VFT_ReduceAction681[];
+extern const classtable_elt_t VFT_ReduceAction682[];
+extern const classtable_elt_t VFT_ReduceAction683[];
+extern const classtable_elt_t VFT_ReduceAction684[];
+extern const classtable_elt_t VFT_ReduceAction685[];
+extern const classtable_elt_t VFT_ReduceAction686[];
+extern const classtable_elt_t VFT_ReduceAction687[];
+extern const classtable_elt_t VFT_ReduceAction688[];
+extern const classtable_elt_t VFT_ReduceAction689[];
+extern const classtable_elt_t VFT_ReduceAction690[];
+extern const classtable_elt_t VFT_ReduceAction691[];
+extern const classtable_elt_t VFT_ReduceAction692[];
+extern const classtable_elt_t VFT_ReduceAction693[];
+extern const classtable_elt_t VFT_ReduceAction694[];
+extern const classtable_elt_t VFT_ReduceAction695[];
+extern const classtable_elt_t VFT_ReduceAction696[];
+extern const classtable_elt_t VFT_ReduceAction697[];
+extern const classtable_elt_t VFT_ReduceAction698[];
+extern const classtable_elt_t VFT_ReduceAction699[];
+extern const classtable_elt_t VFT_ReduceAction700[];
+extern const classtable_elt_t VFT_ReduceAction701[];
+extern const classtable_elt_t VFT_ReduceAction702[];
+extern const classtable_elt_t VFT_ReduceAction703[];
+extern const classtable_elt_t VFT_ReduceAction704[];
+extern const classtable_elt_t VFT_ReduceAction705[];
+extern const classtable_elt_t VFT_ReduceAction706[];
+extern const classtable_elt_t VFT_ReduceAction707[];
+extern const classtable_elt_t VFT_ReduceAction708[];
+extern const classtable_elt_t VFT_ReduceAction709[];
+extern const classtable_elt_t VFT_ReduceAction710[];
+extern const classtable_elt_t VFT_ReduceAction711[];
+extern const classtable_elt_t VFT_ReduceAction712[];
+extern const classtable_elt_t VFT_ReduceAction713[];
+extern const classtable_elt_t VFT_ReduceAction714[];
+extern const classtable_elt_t VFT_ReduceAction715[];
+extern const classtable_elt_t VFT_ReduceAction716[];
+extern const classtable_elt_t VFT_ReduceAction717[];
+extern const classtable_elt_t VFT_ReduceAction718[];
+extern const classtable_elt_t VFT_ReduceAction719[];
+extern const classtable_elt_t VFT_ReduceAction720[];
+extern const classtable_elt_t VFT_ReduceAction721[];
+extern const classtable_elt_t VFT_ReduceAction722[];
+extern const classtable_elt_t VFT_ReduceAction723[];
+extern const classtable_elt_t VFT_ReduceAction724[];
+extern const classtable_elt_t VFT_ReduceAction725[];
+extern const classtable_elt_t VFT_ReduceAction726[];
+extern const classtable_elt_t VFT_ReduceAction727[];
+extern const classtable_elt_t VFT_ReduceAction728[];
+extern const classtable_elt_t VFT_ReduceAction729[];
+extern const classtable_elt_t VFT_ReduceAction730[];
+extern const classtable_elt_t VFT_ReduceAction731[];
+extern const classtable_elt_t VFT_ReduceAction732[];
+extern const classtable_elt_t VFT_ReduceAction733[];
+extern const classtable_elt_t VFT_ReduceAction734[];
+extern const classtable_elt_t VFT_ReduceAction735[];
+extern const classtable_elt_t VFT_ReduceAction736[];
+extern const classtable_elt_t VFT_ReduceAction737[];
+extern const classtable_elt_t VFT_ReduceAction738[];
+extern const classtable_elt_t VFT_ReduceAction739[];
+extern const classtable_elt_t VFT_ReduceAction740[];
+extern const classtable_elt_t VFT_ReduceAction741[];
+extern const classtable_elt_t VFT_ReduceAction742[];
+extern const classtable_elt_t VFT_ReduceAction743[];
+extern const classtable_elt_t VFT_ReduceAction744[];
+extern const classtable_elt_t VFT_ReduceAction745[];
+extern const classtable_elt_t VFT_ReduceAction746[];
+extern const classtable_elt_t VFT_ReduceAction747[];
+extern const classtable_elt_t VFT_ReduceAction748[];
+extern const classtable_elt_t VFT_ReduceAction749[];
+extern const classtable_elt_t VFT_ReduceAction750[];
+extern const classtable_elt_t VFT_ReduceAction751[];
+extern const classtable_elt_t VFT_ReduceAction752[];
+extern const classtable_elt_t VFT_ReduceAction753[];
+extern const classtable_elt_t VFT_ReduceAction754[];
+extern const classtable_elt_t VFT_ReduceAction755[];
+extern const classtable_elt_t VFT_ReduceAction756[];
+extern const classtable_elt_t VFT_ReduceAction757[];
+extern const classtable_elt_t VFT_ReduceAction758[];
+extern const classtable_elt_t VFT_ReduceAction759[];
+extern const classtable_elt_t VFT_ReduceAction760[];
+extern const classtable_elt_t VFT_ReduceAction761[];
+extern const classtable_elt_t VFT_ReduceAction762[];
+extern const classtable_elt_t VFT_ReduceAction763[];
+extern const classtable_elt_t VFT_ReduceAction764[];
+extern const classtable_elt_t VFT_ReduceAction765[];
+extern const classtable_elt_t VFT_ReduceAction766[];
+extern const classtable_elt_t VFT_ReduceAction767[];
+extern const classtable_elt_t VFT_ReduceAction768[];
+extern const classtable_elt_t VFT_ReduceAction769[];
+extern const classtable_elt_t VFT_ReduceAction770[];
+extern const classtable_elt_t VFT_ReduceAction771[];
+extern const classtable_elt_t VFT_ReduceAction772[];
+extern const classtable_elt_t VFT_ReduceAction773[];
+extern const classtable_elt_t VFT_ReduceAction774[];
+extern const classtable_elt_t VFT_ReduceAction775[];
+extern const classtable_elt_t VFT_ReduceAction776[];
+extern const classtable_elt_t VFT_ReduceAction777[];
+extern const classtable_elt_t VFT_ReduceAction778[];
+extern const classtable_elt_t VFT_ReduceAction779[];
+extern const classtable_elt_t VFT_ReduceAction780[];
+extern const classtable_elt_t VFT_ReduceAction781[];
+extern const classtable_elt_t VFT_ReduceAction782[];
+extern const classtable_elt_t VFT_ReduceAction783[];
+extern const classtable_elt_t VFT_ReduceAction784[];
+extern const classtable_elt_t VFT_ReduceAction785[];
+extern const classtable_elt_t VFT_ReduceAction786[];
+extern const classtable_elt_t VFT_ReduceAction787[];
+extern const classtable_elt_t VFT_ReduceAction788[];
+extern const classtable_elt_t VFT_ReduceAction789[];
+extern const classtable_elt_t VFT_ReduceAction790[];
+extern const classtable_elt_t VFT_ReduceAction791[];
+extern const classtable_elt_t VFT_ReduceAction792[];
+extern const classtable_elt_t VFT_ReduceAction793[];
+extern const classtable_elt_t VFT_ReduceAction794[];
+extern const classtable_elt_t VFT_ReduceAction795[];
+extern const classtable_elt_t VFT_ReduceAction796[];
+extern const classtable_elt_t VFT_ReduceAction797[];
+extern const classtable_elt_t VFT_ReduceAction798[];
+extern const classtable_elt_t VFT_ReduceAction799[];
+extern const classtable_elt_t VFT_ReduceAction800[];
+extern const classtable_elt_t VFT_ReduceAction801[];
+extern const classtable_elt_t VFT_ReduceAction802[];
+extern const classtable_elt_t VFT_ReduceAction803[];
+extern const classtable_elt_t VFT_ReduceAction804[];
+extern const classtable_elt_t VFT_ReduceAction805[];
+extern const classtable_elt_t VFT_ReduceAction806[];
+extern const classtable_elt_t VFT_ReduceAction807[];
+extern const classtable_elt_t VFT_ReduceAction808[];
+extern const classtable_elt_t VFT_ReduceAction809[];
+extern const classtable_elt_t VFT_ReduceAction810[];
+extern const classtable_elt_t VFT_ReduceAction811[];
+extern const classtable_elt_t VFT_ReduceAction812[];
+extern const classtable_elt_t VFT_ReduceAction813[];
+extern const classtable_elt_t VFT_ReduceAction814[];
+extern const classtable_elt_t VFT_ReduceAction815[];
+extern const classtable_elt_t VFT_ReduceAction816[];
+extern const classtable_elt_t VFT_ReduceAction817[];
+extern const classtable_elt_t VFT_ReduceAction818[];
+extern const classtable_elt_t VFT_ReduceAction819[];
+extern const classtable_elt_t VFT_ReduceAction820[];
+extern const classtable_elt_t VFT_ReduceAction821[];
+extern const classtable_elt_t VFT_ReduceAction822[];
+extern const classtable_elt_t VFT_ReduceAction823[];
+extern const classtable_elt_t VFT_ReduceAction824[];
+extern const classtable_elt_t VFT_ReduceAction825[];
+extern const classtable_elt_t VFT_ReduceAction826[];
+extern const classtable_elt_t VFT_ReduceAction827[];
+extern const classtable_elt_t VFT_ReduceAction828[];
+extern const classtable_elt_t VFT_ReduceAction829[];
+extern const classtable_elt_t VFT_ReduceAction830[];
+extern const classtable_elt_t VFT_ReduceAction831[];
+extern const classtable_elt_t VFT_ReduceAction832[];
+extern const classtable_elt_t VFT_ReduceAction833[];
+extern const classtable_elt_t VFT_ReduceAction834[];
+extern const classtable_elt_t VFT_ReduceAction835[];
+extern const classtable_elt_t VFT_ReduceAction836[];
+extern const classtable_elt_t VFT_ReduceAction837[];
+extern const classtable_elt_t VFT_ReduceAction838[];
+extern const classtable_elt_t VFT_ReduceAction839[];
+extern const classtable_elt_t VFT_ReduceAction840[];
+extern const classtable_elt_t VFT_ReduceAction841[];
+extern const classtable_elt_t VFT_ReduceAction842[];
+extern const classtable_elt_t VFT_ReduceAction843[];
+extern const classtable_elt_t VFT_ReduceAction844[];
+extern const classtable_elt_t VFT_ReduceAction845[];
+extern const classtable_elt_t VFT_ReduceAction846[];
+extern const classtable_elt_t VFT_ReduceAction847[];
+extern const classtable_elt_t VFT_ReduceAction848[];
+extern const classtable_elt_t VFT_ReduceAction849[];
+extern const classtable_elt_t VFT_ReduceAction850[];
+extern const classtable_elt_t VFT_ReduceAction851[];
+extern const classtable_elt_t VFT_ReduceAction852[];
+extern const classtable_elt_t VFT_ReduceAction853[];
+extern const classtable_elt_t VFT_ReduceAction854[];
+extern const classtable_elt_t VFT_ReduceAction855[];
+extern const classtable_elt_t VFT_ReduceAction856[];
+extern const classtable_elt_t VFT_ReduceAction857[];
+extern const classtable_elt_t VFT_ReduceAction858[];
+extern const classtable_elt_t VFT_ReduceAction859[];
+extern const classtable_elt_t VFT_ReduceAction860[];
+extern const classtable_elt_t VFT_ReduceAction861[];
+extern const classtable_elt_t VFT_ReduceAction862[];
+extern const classtable_elt_t VFT_ReduceAction863[];
+extern const classtable_elt_t VFT_ReduceAction864[];
+extern const classtable_elt_t VFT_ReduceAction865[];
+extern const classtable_elt_t VFT_ReduceAction866[];
+extern const classtable_elt_t VFT_ReduceAction867[];
+extern const classtable_elt_t VFT_ReduceAction868[];
+extern const classtable_elt_t VFT_ReduceAction869[];
+extern const classtable_elt_t VFT_ReduceAction870[];
+extern const classtable_elt_t VFT_ReduceAction871[];
+extern const classtable_elt_t VFT_ReduceAction872[];
+extern const classtable_elt_t VFT_ReduceAction873[];
+extern const classtable_elt_t VFT_ReduceAction874[];
+extern const classtable_elt_t VFT_ReduceAction875[];
+extern const classtable_elt_t VFT_ReduceAction876[];
+extern const classtable_elt_t VFT_ReduceAction877[];
+extern const classtable_elt_t VFT_ReduceAction878[];
+extern const classtable_elt_t VFT_ReduceAction879[];
+extern const classtable_elt_t VFT_ReduceAction880[];
+extern const classtable_elt_t VFT_ReduceAction881[];
+extern const classtable_elt_t VFT_ReduceAction882[];
+extern const classtable_elt_t VFT_ReduceAction883[];
+extern const classtable_elt_t VFT_ReduceAction884[];
+extern const classtable_elt_t VFT_ReduceAction885[];
+extern const classtable_elt_t VFT_ReduceAction886[];
+extern const classtable_elt_t VFT_ReduceAction887[];
+extern const classtable_elt_t VFT_ReduceAction888[];
+extern const classtable_elt_t VFT_ReduceAction889[];
+extern const classtable_elt_t VFT_ReduceAction890[];
+extern const classtable_elt_t VFT_ReduceAction891[];
+extern const classtable_elt_t VFT_ReduceAction892[];
+extern const classtable_elt_t VFT_ReduceAction893[];
+extern const classtable_elt_t VFT_ReduceAction894[];
+extern const classtable_elt_t VFT_ReduceAction895[];
+extern const classtable_elt_t VFT_ReduceAction896[];
+extern const classtable_elt_t VFT_ReduceAction897[];
+extern const classtable_elt_t VFT_ReduceAction898[];
+extern const classtable_elt_t VFT_ReduceAction899[];
+extern const classtable_elt_t VFT_ReduceAction900[];
+extern const classtable_elt_t VFT_ReduceAction901[];
+extern const classtable_elt_t VFT_ReduceAction902[];
+extern const classtable_elt_t VFT_ReduceAction903[];
+extern const classtable_elt_t VFT_ReduceAction904[];
+extern const classtable_elt_t VFT_ReduceAction905[];
+extern const classtable_elt_t VFT_ReduceAction906[];
+extern const classtable_elt_t VFT_ReduceAction907[];
+extern const classtable_elt_t VFT_ReduceAction908[];
+extern const classtable_elt_t VFT_ReduceAction909[];
+extern const classtable_elt_t VFT_ReduceAction910[];
+extern const classtable_elt_t VFT_ReduceAction911[];
+extern const classtable_elt_t VFT_ReduceAction912[];
+extern const classtable_elt_t VFT_ReduceAction913[];
+extern const classtable_elt_t VFT_ReduceAction914[];
+extern const classtable_elt_t VFT_ReduceAction915[];
+extern const classtable_elt_t VFT_ReduceAction916[];
+extern const classtable_elt_t VFT_ReduceAction917[];
+extern const classtable_elt_t VFT_ReduceAction918[];
+extern const classtable_elt_t VFT_ReduceAction919[];
+extern const classtable_elt_t VFT_ReduceAction920[];
+extern const classtable_elt_t VFT_ReduceAction921[];
+extern const classtable_elt_t VFT_ReduceAction922[];
+extern const classtable_elt_t VFT_ReduceAction923[];
+extern const classtable_elt_t VFT_ReduceAction924[];
+extern const classtable_elt_t VFT_ReduceAction925[];
+extern const classtable_elt_t VFT_ReduceAction926[];
+extern const classtable_elt_t VFT_ReduceAction927[];
+extern const classtable_elt_t VFT_ReduceAction928[];
+extern const classtable_elt_t VFT_ReduceAction929[];
+extern const classtable_elt_t VFT_ReduceAction930[];
+extern const classtable_elt_t VFT_ReduceAction931[];
+extern const classtable_elt_t VFT_ReduceAction932[];
+extern const classtable_elt_t VFT_ReduceAction933[];
+extern const classtable_elt_t VFT_ReduceAction934[];
+extern const classtable_elt_t VFT_ReduceAction935[];
+extern const classtable_elt_t VFT_ReduceAction936[];
+extern const classtable_elt_t VFT_ReduceAction937[];
+extern const classtable_elt_t VFT_ReduceAction938[];
+extern const classtable_elt_t VFT_ReduceAction939[];
+extern const classtable_elt_t VFT_ReduceAction940[];
+extern const classtable_elt_t VFT_ReduceAction941[];
+extern const classtable_elt_t VFT_ReduceAction942[];
+extern const classtable_elt_t VFT_ReduceAction943[];
+extern const classtable_elt_t VFT_ReduceAction944[];
+extern const classtable_elt_t VFT_ReduceAction945[];
+extern const classtable_elt_t VFT_ReduceAction946[];
+extern const classtable_elt_t VFT_ReduceAction947[];
+extern const classtable_elt_t VFT_ReduceAction948[];
+extern const classtable_elt_t VFT_ReduceAction949[];
+extern const classtable_elt_t VFT_ReduceAction950[];
+extern const classtable_elt_t VFT_ReduceAction951[];
+extern const classtable_elt_t VFT_ReduceAction952[];
+extern const classtable_elt_t VFT_ReduceAction953[];
+extern const classtable_elt_t VFT_ReduceAction954[];
+extern const classtable_elt_t VFT_ReduceAction955[];
+extern const classtable_elt_t VFT_ReduceAction956[];
+extern const classtable_elt_t VFT_ReduceAction957[];
+extern const classtable_elt_t VFT_ReduceAction958[];
+extern const classtable_elt_t VFT_ReduceAction959[];
+extern const classtable_elt_t VFT_ReduceAction960[];
+extern const classtable_elt_t VFT_ReduceAction961[];
+extern const classtable_elt_t VFT_ReduceAction962[];
+extern const classtable_elt_t VFT_ReduceAction963[];
+extern const classtable_elt_t VFT_ReduceAction964[];
+extern const classtable_elt_t VFT_ReduceAction965[];
+extern const classtable_elt_t VFT_ReduceAction966[];
+extern const classtable_elt_t VFT_ReduceAction967[];
+extern const classtable_elt_t VFT_ReduceAction968[];
+extern const classtable_elt_t VFT_ReduceAction969[];
+extern const classtable_elt_t VFT_ReduceAction970[];
+extern const classtable_elt_t VFT_ReduceAction971[];
+extern const classtable_elt_t VFT_ReduceAction972[];
+extern const classtable_elt_t VFT_ReduceAction973[];
+extern const classtable_elt_t VFT_ReduceAction974[];
+extern const classtable_elt_t VFT_ReduceAction975[];
+extern const classtable_elt_t VFT_ReduceAction976[];
+extern const classtable_elt_t VFT_ReduceAction977[];
+extern const classtable_elt_t VFT_ReduceAction978[];
+extern const classtable_elt_t VFT_ReduceAction979[];
+extern const classtable_elt_t VFT_ReduceAction980[];
+extern const classtable_elt_t VFT_ReduceAction981[];
+extern const classtable_elt_t VFT_ReduceAction982[];
+extern const classtable_elt_t VFT_ReduceAction983[];
+extern const classtable_elt_t VFT_ReduceAction984[];
+extern const classtable_elt_t VFT_ReduceAction985[];
+extern const classtable_elt_t VFT_ReduceAction986[];
+extern const classtable_elt_t VFT_ReduceAction987[];
+extern const classtable_elt_t VFT_ReduceAction988[];
+extern const classtable_elt_t VFT_ReduceAction989[];
+extern const classtable_elt_t VFT_ReduceAction990[];
+extern const classtable_elt_t VFT_ReduceAction991[];
+extern const classtable_elt_t VFT_ReduceAction992[];
+extern const classtable_elt_t VFT_ReduceAction993[];
+extern const classtable_elt_t VFT_ReduceAction994[];
+extern const classtable_elt_t VFT_ReduceAction995[];
+extern const classtable_elt_t VFT_ReduceAction996[];
+extern const classtable_elt_t VFT_ReduceAction997[];
+extern const classtable_elt_t VFT_ReduceAction998[];
+extern const classtable_elt_t VFT_ReduceAction999[];
+extern const classtable_elt_t VFT_ReduceAction1000[];
+extern const classtable_elt_t VFT_ReduceAction1001[];
+extern const classtable_elt_t VFT_ReduceAction1002[];
+extern const classtable_elt_t VFT_ReduceAction1003[];
+extern const classtable_elt_t VFT_ReduceAction1004[];
+extern const classtable_elt_t VFT_ReduceAction1005[];
+extern const classtable_elt_t VFT_ReduceAction1006[];
+extern const classtable_elt_t VFT_ReduceAction1007[];
+extern const classtable_elt_t VFT_ReduceAction1008[];
+extern const classtable_elt_t VFT_ReduceAction1009[];
+extern const classtable_elt_t VFT_ReduceAction1010[];
+extern const classtable_elt_t VFT_ReduceAction1011[];
+extern const classtable_elt_t VFT_ReduceAction1012[];
+extern const classtable_elt_t VFT_ReduceAction1013[];
+extern const classtable_elt_t VFT_ReduceAction1014[];
+extern const classtable_elt_t VFT_ReduceAction1015[];
+extern const classtable_elt_t VFT_ReduceAction1016[];
+extern const classtable_elt_t VFT_ReduceAction1017[];
+extern const classtable_elt_t VFT_ReduceAction1018[];
+extern const classtable_elt_t VFT_ReduceAction1019[];
+extern const classtable_elt_t VFT_ReduceAction1020[];
+extern const classtable_elt_t VFT_ReduceAction1021[];
+extern const classtable_elt_t VFT_ReduceAction1022[];
+extern const classtable_elt_t VFT_ReduceAction1023[];
+extern const classtable_elt_t VFT_ReduceAction1024[];
+extern const classtable_elt_t VFT_ReduceAction1025[];
+extern const classtable_elt_t VFT_ReduceAction1026[];
+extern const classtable_elt_t VFT_ReduceAction1027[];
+extern const classtable_elt_t VFT_ReduceAction1028[];
+extern const classtable_elt_t VFT_ReduceAction1029[];
+extern const classtable_elt_t VFT_ReduceAction1030[];
+extern const classtable_elt_t VFT_ReduceAction1031[];
+extern const classtable_elt_t VFT_ReduceAction1032[];
+extern const classtable_elt_t VFT_ReduceAction1033[];
+extern const classtable_elt_t VFT_ReduceAction1034[];
+extern const classtable_elt_t VFT_ReduceAction1035[];
+extern const classtable_elt_t VFT_ReduceAction1036[];
+extern const classtable_elt_t VFT_ReduceAction1037[];
+extern const classtable_elt_t VFT_ReduceAction1038[];
+extern const classtable_elt_t VFT_ReduceAction1039[];
+extern const classtable_elt_t VFT_ReduceAction1040[];
+extern const classtable_elt_t VFT_ReduceAction1041[];
+extern const classtable_elt_t VFT_ReduceAction1042[];
+extern const classtable_elt_t VFT_ReduceAction1043[];
+extern const classtable_elt_t VFT_ReduceAction1044[];
+extern const classtable_elt_t VFT_ReduceAction1045[];
+extern const classtable_elt_t VFT_ReduceAction1046[];
+extern const classtable_elt_t VFT_ReduceAction1047[];
+extern const classtable_elt_t VFT_ReduceAction1048[];
+extern const classtable_elt_t VFT_ReduceAction1049[];
+extern const classtable_elt_t VFT_ReduceAction1050[];
+extern const classtable_elt_t VFT_ReduceAction1051[];
+extern const classtable_elt_t VFT_ReduceAction1052[];
+extern const classtable_elt_t VFT_ReduceAction1053[];
+extern const classtable_elt_t VFT_ReduceAction1054[];
+extern const classtable_elt_t VFT_ReduceAction1055[];
+extern const classtable_elt_t VFT_ReduceAction1056[];
+extern const classtable_elt_t VFT_ReduceAction1057[];
+extern const classtable_elt_t VFT_ReduceAction1058[];
+extern const classtable_elt_t VFT_ReduceAction1059[];
+extern const classtable_elt_t VFT_ReduceAction1060[];
+extern const classtable_elt_t VFT_ReduceAction1061[];
+extern const classtable_elt_t VFT_ReduceAction1062[];
+extern const classtable_elt_t VFT_ReduceAction1063[];
+extern const classtable_elt_t VFT_ReduceAction1064[];
+extern const classtable_elt_t VFT_ReduceAction1065[];
+extern const classtable_elt_t VFT_ReduceAction1066[];
+extern const classtable_elt_t VFT_ReduceAction1067[];
+extern const classtable_elt_t VFT_ReduceAction1068[];
+extern const classtable_elt_t VFT_ReduceAction1069[];
+extern const classtable_elt_t VFT_ReduceAction1070[];
+extern const classtable_elt_t VFT_ReduceAction1071[];
+extern const classtable_elt_t VFT_ReduceAction1072[];
+extern const classtable_elt_t VFT_ReduceAction1073[];
+extern const classtable_elt_t VFT_ReduceAction1074[];
+extern const classtable_elt_t VFT_ReduceAction1075[];
+extern const classtable_elt_t VFT_ReduceAction1076[];
+extern const classtable_elt_t VFT_ReduceAction1077[];
+extern const classtable_elt_t VFT_ReduceAction1078[];
+extern const classtable_elt_t VFT_ReduceAction1079[];
+extern const classtable_elt_t VFT_ReduceAction1080[];
+extern const classtable_elt_t VFT_ReduceAction1081[];
+extern const classtable_elt_t VFT_ReduceAction1082[];
+extern const classtable_elt_t VFT_ReduceAction1083[];
+extern const classtable_elt_t VFT_ReduceAction1084[];
+extern const classtable_elt_t VFT_ReduceAction1085[];
+extern const classtable_elt_t VFT_ReduceAction1086[];
+extern const classtable_elt_t VFT_ReduceAction1087[];
+extern const classtable_elt_t VFT_ReduceAction1088[];
+extern const classtable_elt_t VFT_ReduceAction1089[];
+extern const classtable_elt_t VFT_ReduceAction1090[];
+extern const classtable_elt_t VFT_ReduceAction1091[];
+extern const classtable_elt_t VFT_ReduceAction1092[];
+extern const classtable_elt_t VFT_ReduceAction1093[];
+extern const classtable_elt_t VFT_ReduceAction1094[];
+extern const classtable_elt_t VFT_ReduceAction1095[];
+extern const classtable_elt_t VFT_ReduceAction1096[];
+extern const classtable_elt_t VFT_ReduceAction1097[];
+extern const classtable_elt_t VFT_ReduceAction1098[];
+extern const classtable_elt_t VFT_ReduceAction1099[];
+extern const classtable_elt_t VFT_ReduceAction1100[];
+extern const classtable_elt_t VFT_ReduceAction1101[];
+extern const classtable_elt_t VFT_ReduceAction1102[];
+extern const classtable_elt_t VFT_ReduceAction1103[];
+extern const classtable_elt_t VFT_ReduceAction1104[];
+extern const classtable_elt_t VFT_ReduceAction1105[];
+extern const classtable_elt_t VFT_ReduceAction1106[];
+extern const classtable_elt_t VFT_ReduceAction1107[];
+extern const classtable_elt_t VFT_ReduceAction1108[];
+extern const classtable_elt_t VFT_ReduceAction1109[];
+extern const classtable_elt_t VFT_ReduceAction1110[];
+extern const classtable_elt_t VFT_ReduceAction1111[];
+extern const classtable_elt_t VFT_ReduceAction1112[];
+extern const classtable_elt_t VFT_ReduceAction1113[];
+extern const classtable_elt_t VFT_ReduceAction1114[];
+extern const classtable_elt_t VFT_ReduceAction1115[];
+extern const classtable_elt_t VFT_ReduceAction1116[];
+extern const classtable_elt_t VFT_ReduceAction1117[];
+extern const classtable_elt_t VFT_ReduceAction1118[];
+extern const classtable_elt_t VFT_ReduceAction1119[];
+extern const classtable_elt_t VFT_ReduceAction1120[];
+extern const classtable_elt_t VFT_ReduceAction1121[];
+extern const classtable_elt_t VFT_ReduceAction1122[];
+extern const classtable_elt_t VFT_ReduceAction1123[];
+extern const classtable_elt_t VFT_ReduceAction1124[];
+extern const classtable_elt_t VFT_ReduceAction1125[];
+extern const classtable_elt_t VFT_ReduceAction1126[];
+extern const classtable_elt_t VFT_ReduceAction1127[];
+extern const classtable_elt_t VFT_ReduceAction1128[];
+extern const classtable_elt_t VFT_ReduceAction1129[];
+extern const classtable_elt_t VFT_ReduceAction1130[];
+extern const classtable_elt_t VFT_ReduceAction1131[];
+extern const classtable_elt_t VFT_ReduceAction1132[];
+extern const classtable_elt_t VFT_ReduceAction1133[];
+extern const classtable_elt_t VFT_ReduceAction1134[];
+extern const classtable_elt_t VFT_ReduceAction1135[];
+extern const classtable_elt_t VFT_ReduceAction1136[];
+extern const classtable_elt_t VFT_ReduceAction1137[];
+extern const classtable_elt_t VFT_ReduceAction1138[];
+extern const classtable_elt_t VFT_ReduceAction1139[];
+extern const classtable_elt_t VFT_ReduceAction1140[];
+extern const classtable_elt_t VFT_ReduceAction1141[];
+extern const classtable_elt_t VFT_ReduceAction1142[];
+extern const classtable_elt_t VFT_ReduceAction1143[];
+extern const classtable_elt_t VFT_ReduceAction1144[];
+extern const classtable_elt_t VFT_ReduceAction1145[];
+extern const classtable_elt_t VFT_ReduceAction1146[];
+extern const classtable_elt_t VFT_ReduceAction1147[];
+extern const classtable_elt_t VFT_ReduceAction1148[];
+extern const classtable_elt_t VFT_ReduceAction1149[];
+extern const classtable_elt_t VFT_ReduceAction1150[];
+extern const classtable_elt_t VFT_ReduceAction1151[];
+extern const classtable_elt_t VFT_ReduceAction1152[];
+extern const classtable_elt_t VFT_ReduceAction1153[];
+extern const classtable_elt_t VFT_ReduceAction1154[];
+extern const classtable_elt_t VFT_ReduceAction1155[];
+extern const classtable_elt_t VFT_ReduceAction1156[];
+extern const classtable_elt_t VFT_ReduceAction1157[];
+extern const classtable_elt_t VFT_ReduceAction1158[];
+extern const classtable_elt_t VFT_ReduceAction1159[];
+extern const classtable_elt_t VFT_ReduceAction1160[];
+extern const classtable_elt_t VFT_ReduceAction1161[];
+extern const classtable_elt_t VFT_ReduceAction1162[];
+extern const classtable_elt_t VFT_ReduceAction1163[];
+extern const classtable_elt_t VFT_ReduceAction1164[];
+extern const classtable_elt_t VFT_ReduceAction1165[];
+extern const classtable_elt_t VFT_ReduceAction1166[];
+extern const classtable_elt_t VFT_ReduceAction1167[];
+extern const classtable_elt_t VFT_ReduceAction1168[];
+extern const classtable_elt_t VFT_ReduceAction1169[];
+extern const classtable_elt_t VFT_ReduceAction1170[];
+extern const classtable_elt_t VFT_ReduceAction1171[];
+extern const classtable_elt_t VFT_ReduceAction1172[];
+extern const classtable_elt_t VFT_ReduceAction1173[];
+extern const classtable_elt_t VFT_ReduceAction1174[];
+extern const classtable_elt_t VFT_ReduceAction1175[];
+extern const classtable_elt_t VFT_ReduceAction1176[];
+extern const classtable_elt_t VFT_ReduceAction1177[];
+extern const classtable_elt_t VFT_ReduceAction1178[];
+extern const classtable_elt_t VFT_ReduceAction1179[];
+extern const classtable_elt_t VFT_ReduceAction1180[];
+extern const classtable_elt_t VFT_ReduceAction1181[];
+extern const classtable_elt_t VFT_ReduceAction1182[];
+extern const classtable_elt_t VFT_ReduceAction1183[];
+extern const classtable_elt_t VFT_ReduceAction1184[];
+extern const classtable_elt_t VFT_ReduceAction1185[];
+extern const classtable_elt_t VFT_ReduceAction1186[];
+extern const classtable_elt_t VFT_ReduceAction1187[];
+extern const classtable_elt_t VFT_ReduceAction1188[];
+extern const classtable_elt_t VFT_ReduceAction1189[];
+extern const classtable_elt_t VFT_ReduceAction1190[];
+extern const classtable_elt_t VFT_ReduceAction1191[];
+extern const classtable_elt_t VFT_ReduceAction1192[];
+extern const classtable_elt_t VFT_ReduceAction1193[];
+extern const classtable_elt_t VFT_ReduceAction1194[];
+extern const classtable_elt_t VFT_PartialOrder[];
+extern const classtable_elt_t VFT_PartialOrderElement[];
+extern const classtable_elt_t VFT_MMContext[];
+extern const classtable_elt_t VFT_MMDirectory[];
+extern const classtable_elt_t VFT_MMModule[];
+extern const classtable_elt_t VFT_MMGlobalClass[];
+extern const classtable_elt_t VFT_MMLocalClass[];
+extern const classtable_elt_t VFT_MMGlobalProperty[];
+extern const classtable_elt_t VFT_MMLocalProperty[];
+extern const classtable_elt_t VFT_MMAttribute[];
+extern const classtable_elt_t VFT_MMMethod[];
+extern const classtable_elt_t VFT_MMConcreteClass[];
+extern const classtable_elt_t VFT_MMSignature[];
+extern const classtable_elt_t VFT_MMClosure[];
+extern const classtable_elt_t VFT_MMAncestor[];
+extern const classtable_elt_t VFT_MMType[];
+extern const classtable_elt_t VFT_MMNullableType[];
+extern const classtable_elt_t VFT_MMTypeClass[];
+extern const classtable_elt_t VFT_MMTypeSimpleClass[];
+extern const classtable_elt_t VFT_MMTypeNone[];
+extern const classtable_elt_t VFT_MMImplicitLocalClass[];
+extern const classtable_elt_t VFT_MMRefineAncestor[];
+extern const classtable_elt_t VFT_MMSpecAncestor[];
+extern const classtable_elt_t VFT_MMDefaultAncestor[];
+extern const classtable_elt_t VFT_MMTypeFormal[];
+extern const classtable_elt_t VFT_MMTypeGeneric[];
+extern const classtable_elt_t VFT_MMTypeFormalParameter[];
+extern const classtable_elt_t VFT_MMTypeProperty[];
+extern const classtable_elt_t VFT_MMVirtualType[];
+extern const classtable_elt_t VFT_Option[];
+extern const classtable_elt_t VFT_OptionText[];
+extern const classtable_elt_t VFT_OptionBool[];
+extern const classtable_elt_t VFT_OptionCount[];
+extern const classtable_elt_t VFT_OptionParameter[];
+extern const classtable_elt_t VFT_OptionString[];
+extern const classtable_elt_t VFT_OptionEnum[];
+extern const classtable_elt_t VFT_OptionInt[];
+extern const classtable_elt_t VFT_OptionArray[];
+extern const classtable_elt_t VFT_OptionContext[];
+extern const classtable_elt_t VFT_Message[];
+extern const classtable_elt_t VFT_ToolContext[];
+extern const classtable_elt_t VFT_ModuleLoader[];
+extern const classtable_elt_t VFT_MMSrcModule[];
+extern const classtable_elt_t VFT_MMSrcLocalClass[];
+extern const classtable_elt_t VFT_MMSrcAttribute[];
+extern const classtable_elt_t VFT_MMSrcMethod[];
+extern const classtable_elt_t VFT_MMAttrImplementationMethod[];
+extern const classtable_elt_t VFT_MMReadImplementationMethod[];
+extern const classtable_elt_t VFT_MMWriteImplementationMethod[];
+extern const classtable_elt_t VFT_MMMethSrcMethod[];
+extern const classtable_elt_t VFT_MMSrcTypeProperty[];
+extern const classtable_elt_t VFT_MMImplicitInit[];
+extern const classtable_elt_t VFT_Variable[];
+extern const classtable_elt_t VFT_VarVariable[];
+extern const classtable_elt_t VFT_ParamVariable[];
+extern const classtable_elt_t VFT_AutoVariable[];
+extern const classtable_elt_t VFT_ClosureVariable[];
+extern const classtable_elt_t VFT_AbsSyntaxVisitor[];
+extern const classtable_elt_t VFT_AAbsAbsSendExpr[];
+extern const classtable_elt_t VFT_AAbsSendExpr[];
+extern const classtable_elt_t VFT_ASuperInitCall[];
+extern const classtable_elt_t VFT_ASendReassignExpr[];
+extern const classtable_elt_t VFT_CSHSorter[];
+extern const classtable_elt_t VFT_MMSrcAncestor[];
+extern const classtable_elt_t VFT_ClassBuilderVisitor[];
+extern const classtable_elt_t VFT_ClassSpecializationBuilderVisitor[];
+extern const classtable_elt_t VFT_ClassAncestorBuilder[];
+extern const classtable_elt_t VFT_ClassVerifierVisitor[];
+extern const classtable_elt_t VFT_PropertyBuilderVisitor[];
+extern const classtable_elt_t VFT_PropertyVerifierVisitor[];
+extern const classtable_elt_t VFT_SignatureBuilder[];
+extern const classtable_elt_t VFT_MethidAccumulator[];
+extern const classtable_elt_t VFT_IRegister[];
+extern const classtable_elt_t VFT_IEscapeMark[];
+extern const classtable_elt_t VFT_IClosureDecl[];
+extern const classtable_elt_t VFT_IRoutine[];
+extern const classtable_elt_t VFT_IClosureDef[];
+extern const classtable_elt_t VFT_ICode[];
+extern const classtable_elt_t VFT_ICode0[];
+extern const classtable_elt_t VFT_ICode1[];
+extern const classtable_elt_t VFT_ICode2[];
+extern const classtable_elt_t VFT_ICodeN[];
+extern const classtable_elt_t VFT_ISeq[];
+extern const classtable_elt_t VFT_ILoop[];
+extern const classtable_elt_t VFT_IIf[];
+extern const classtable_elt_t VFT_IEscape[];
+extern const classtable_elt_t VFT_IAbort[];
+extern const classtable_elt_t VFT_IAbsCall[];
+extern const classtable_elt_t VFT_ICall[];
+extern const classtable_elt_t VFT_ISuper[];
+extern const classtable_elt_t VFT_INew[];
+extern const classtable_elt_t VFT_IAllocateInstance[];
+extern const classtable_elt_t VFT_IStaticCall[];
+extern const classtable_elt_t VFT_ICheckInstance[];
+extern const classtable_elt_t VFT_IInitAttributes[];
+extern const classtable_elt_t VFT_IClosCall[];
+extern const classtable_elt_t VFT_INative[];
+extern const classtable_elt_t VFT_IMove[];
+extern const classtable_elt_t VFT_IAttrRead[];
+extern const classtable_elt_t VFT_IAttrWrite[];
+extern const classtable_elt_t VFT_IAttrIsset[];
+extern const classtable_elt_t VFT_ITypeCheck[];
+extern const classtable_elt_t VFT_IIs[];
+extern const classtable_elt_t VFT_INot[];
+extern const classtable_elt_t VFT_IOnce[];
+extern const classtable_elt_t VFT_IHasClos[];
+extern const classtable_elt_t VFT_ICodeBuilder[];
+extern const classtable_elt_t VFT_ICodeVisitor[];
+extern const classtable_elt_t VFT_ICodeDupContext[];
+extern const classtable_elt_t VFT_VariableContext[];
+extern const classtable_elt_t VFT_RootVariableContext[];
+extern const classtable_elt_t VFT_SubVariableContext[];
+extern const classtable_elt_t VFT_CastVariableContext[];
+extern const classtable_elt_t VFT_MergeVariableContext[];
+extern const classtable_elt_t VFT_EscapableContext[];
+extern const classtable_elt_t VFT_EscapableBlock[];
+extern const classtable_elt_t VFT_BreakOnlyEscapableBlock[];
+extern const classtable_elt_t VFT_EscapableClosure[];
+extern const classtable_elt_t VFT_AEscapeExpr[];
+extern const classtable_elt_t VFT_TypingVisitor[];
+extern const classtable_elt_t VFT_ATypeCheckExpr[];
+extern const classtable_elt_t VFT_PrimitiveInfo[];
+extern const classtable_elt_t VFT_A2IContext[];
+extern const classtable_elt_t VFT_A2IVisitor[];
+extern const classtable_elt_t VFT_SrcModuleLoader[];
+extern const classtable_elt_t VFT_AbstractCompiler[];
+extern const classtable_elt_t VFT_Program[];
+extern const classtable_elt_t VFT_WriterNode[];
+extern const classtable_elt_t VFT_Writer[];
+extern const classtable_elt_t VFT_WriterStrings[];
+extern const classtable_elt_t VFT_CompilerVisitor[];
+extern const classtable_elt_t VFT_IRegisterSlotAllocationVisitor[];
+extern const classtable_elt_t VFT_SlotGroup[];
+extern const classtable_elt_t VFT_ICodeDumper[];
+extern const classtable_elt_t VFT_InlineMethodVisitor[];
+extern const classtable_elt_t VFT_ReachableMethodAnalysis[];
+extern const classtable_elt_t VFT_DefaultReachableMethodAnalysis[];
+extern const classtable_elt_t VFT_ChaContext[];
+extern const classtable_elt_t VFT_ChaBuilder[];
+extern const classtable_elt_t VFT_ChaVisitor[];
+extern const classtable_elt_t VFT_InstantiatedTypeAnalysis[];
+extern const classtable_elt_t VFT_DefaultInstantiatedTypeAnalysis[];
+extern const classtable_elt_t VFT_RtaContext[];
+extern const classtable_elt_t VFT_RtaBuilder[];
+extern const classtable_elt_t VFT_RtaVisitor[];
+extern const classtable_elt_t VFT_ReachableAsInitAnalysis[];
+extern const classtable_elt_t VFT_DefaultReachableAsInitAnalysis[];
+extern const classtable_elt_t VFT_ReachableAsInitBuilder[];
+extern const classtable_elt_t VFT_ReachableAsInitAnalysisImpl[];
+extern const classtable_elt_t VFT_RAIVisitor[];
+extern const classtable_elt_t VFT_ReachableFromInitMethodAnalysis[];
+extern const classtable_elt_t VFT_DefaultReachableFromInitMethodAnalysis[];
+extern const classtable_elt_t VFT_RFIMABuilder[];
+extern const classtable_elt_t VFT_RFIMAContext[];
+extern const classtable_elt_t VFT_RFIMAVisitor[];
+extern const classtable_elt_t VFT_InlineGetSetVisitor[];
+extern const classtable_elt_t VFT_IssetCounter[];
+extern const classtable_elt_t VFT_GetterTestRemover[];
+extern const classtable_elt_t VFT_FileICodeDumper[];
+extern const classtable_elt_t VFT_ColorContext[];
+extern const classtable_elt_t VFT_TableInformation[];
+extern const classtable_elt_t VFT_CompiledClass[];
+extern const classtable_elt_t VFT_AbsTableElt[];
+extern const classtable_elt_t VFT_TableElt[];
+extern const classtable_elt_t VFT_ModuleTableElt[];
+extern const classtable_elt_t VFT_ModuleTableEltGroup[];
+extern const classtable_elt_t VFT_TableEltProp[];
+extern const classtable_elt_t VFT_TableEltMeth[];
+extern const classtable_elt_t VFT_TableEltSuper[];
+extern const classtable_elt_t VFT_TableEltAttr[];
+extern const classtable_elt_t VFT_AbsTableEltClass[];
+extern const classtable_elt_t VFT_TableEltClass[];
+extern const classtable_elt_t VFT_TableEltClassId[];
+extern const classtable_elt_t VFT_TableEltClassInitTable[];
+extern const classtable_elt_t VFT_TableEltClassColor[];
+extern const classtable_elt_t VFT_TableEltComposite[];
+extern const classtable_elt_t VFT_TableEltClassSelfId[];
+extern const classtable_elt_t VFT_TableEltClassObjectSize[];
+extern const classtable_elt_t VFT_TableEltObjectId[];
+extern const classtable_elt_t VFT_TableEltVftPointer[];
+extern const classtable_elt_t VFT_I2CCompilerVisitor[];
+extern const classtable_elt_t VFT_CProgram[];
index 20509f6..8c21842 100644 (file)
@@ -786,7 +786,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   }
   /* ./../lib/opts.nit:143 */
   fra.me.REG[4] = CALL_array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
-  ATTR_opts___OptionEnum____enum(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_opts___OptionEnum____values(fra.me.REG[0]) = fra.me.REG[4];
   /* ./../lib/opts.nit:144 */
   REGB2 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
@@ -849,12 +849,12 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./../lib/opts.nit:149 */
-  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____enum(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_enum", LOCATE_opts, 149);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 149);
   }
-  fra.me.REG[0] = ATTR_opts___OptionEnum____enum(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
   REGB0 = CALL_abstract_collection___SequenceRead___index_of(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* ./../lib/opts.nit:150 */
   goto label1;
@@ -878,12 +878,12 @@ val_t opts___OptionEnum___value_name(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./../lib/opts.nit:153 */
-  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____enum(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_enum", LOCATE_opts, 153);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 153);
   }
-  fra.me.REG[1] = ATTR_opts___OptionEnum____enum(fra.me.REG[0]);
+  fra.me.REG[1] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
   fra.me.REG[0] = CALL_opts___Option___value(fra.me.REG[0])(fra.me.REG[0]);
   /* ./../lib/standard//collection//array.nit:243 */
   REGB0 = fra.me.REG[0];
@@ -976,12 +976,12 @@ val_t opts___OptionEnum___pretty_default(val_t p0){
     } else fra.me.REG[2] = once_value_1;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    REGB0 = TAG_Bool(ATTR_opts___OptionEnum____enum(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_enum", LOCATE_opts, 158);
+      nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 158);
     }
-    fra.me.REG[2] = ATTR_opts___OptionEnum____enum(fra.me.REG[0]);
+    fra.me.REG[2] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
     fra.me.REG[0] = CALL_opts___Option___default_value(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_Int, ID_Int)) /*cast VALUE*/;
     if (UNTAG_Bool(REGB0)) {
index 6b23e9c..e85b6b3 100644 (file)
@@ -69,7 +69,7 @@ extern const int SFT_opts[];
 #define CALL_opts___OptionString___init(recv) ((opts___OptionString___init_t)CALL((recv), (SFT_opts[18] + 1)))
 #define ID_OptionEnum (SFT_opts[19])
 #define COLOR_OptionEnum (SFT_opts[20])
-#define ATTR_opts___OptionEnum____enum(recv) ATTR(recv, (SFT_opts[21] + 0))
+#define ATTR_opts___OptionEnum____values(recv) ATTR(recv, (SFT_opts[21] + 0))
 #define INIT_TABLE_POS_OptionEnum (SFT_opts[22] + 0)
 #define CALL_opts___OptionEnum___init(recv) ((opts___OptionEnum___init_t)CALL((recv), (SFT_opts[22] + 1)))
 #define CALL_opts___OptionEnum___value_name(recv) ((opts___OptionEnum___value_name_t)CALL((recv), (SFT_opts[22] + 2)))
index 6e5bfe6..e34f157 100644 (file)
@@ -625,11 +625,7 @@ val_t parser___Parser___parse(val_t p0){
             REGB5 = CALL_tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB6, REGB5);
             REGB3 = REGB5;
             /* ./parser//parser.nit:125 */
-            REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:217 */
-            REGB5 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB5));
-            /* ./parser//parser.nit:125 */
-            REGB4 = REGB5;
+            goto label2;
           }
         }
       } else {
@@ -639,65 +635,65 @@ val_t parser___Parser___parse(val_t p0){
     }
     label2: while(0);
     /* ./parser//parser.nit:129 */
-    REGB4 = TAG_Int(0);
-    REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
-    if (UNTAG_Bool(REGB1)) {
+    REGB1 = TAG_Int(0);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
+    if (UNTAG_Bool(REGB0)) {
     } else {
       /* ./../lib/standard//kernel.nit:207 */
-      REGB4 = TAG_Bool((REGB2)==(REGB4));
+      REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* ./parser//parser.nit:129 */
-      REGB1 = REGB4;
+      REGB0 = REGB1;
     }
-    if (UNTAG_Bool(REGB1)) {
+    if (UNTAG_Bool(REGB0)) {
       /* ./parser//parser.nit:130 */
       fra.me.REG[4] = CALL_lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
       CALL_parser___Parser___push(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[4]);
     } else {
       /* ./parser//parser.nit:131 */
-      REGB1 = TAG_Int(1);
-      REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
-      if (UNTAG_Bool(REGB4)) {
+      REGB0 = TAG_Int(1);
+      REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
+      if (UNTAG_Bool(REGB1)) {
       } else {
         /* ./../lib/standard//kernel.nit:207 */
-        REGB1 = TAG_Bool((REGB2)==(REGB1));
+        REGB0 = TAG_Bool((REGB2)==(REGB0));
         /* ./parser//parser.nit:131 */
-        REGB4 = REGB1;
+        REGB1 = REGB0;
       }
-      if (UNTAG_Bool(REGB4)) {
+      if (UNTAG_Bool(REGB1)) {
         /* ./parser//parser.nit:132 */
-        REGB4 = TAG_Bool(ATTR_parser___Parser____reduce_table(fra.me.REG[0])!=NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
+        REGB1 = TAG_Bool(ATTR_parser___Parser____reduce_table(fra.me.REG[0])!=NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
         } else {
           nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_parser, 132);
         }
         fra.me.REG[4] = ATTR_parser___Parser____reduce_table(fra.me.REG[0]);
         /* ./../lib/standard//collection//array.nit:245 */
-        REGB4 = TAG_Int(0);
+        REGB1 = TAG_Int(0);
         /* ./../lib/standard//kernel.nit:213 */
-        REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
+        REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
         /* ./../lib/standard//collection//array.nit:245 */
-        if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
-          if (UNTAG_Bool(REGB4)) {
+        if (UNTAG_Bool(REGB1)) {
+          REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          if (UNTAG_Bool(REGB1)) {
           } else {
             nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
           }
-          REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
           /* ./../lib/standard//kernel.nit:212 */
-          REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
+          REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
         } else {
           /* ./../lib/standard//collection//array.nit:245 */
-          REGB1 = TAG_Bool(false);
-          REGB4 = REGB1;
+          REGB0 = TAG_Bool(false);
+          REGB1 = REGB0;
         }
-        if (UNTAG_Bool(REGB4)) {
+        if (UNTAG_Bool(REGB1)) {
         } else {
           nit_abort("Assert %s  failed", "'index'", LOCATE_array, 245);
         }
         /* ./../lib/standard//collection//array.nit:246 */
         fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
-        REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-        if (UNTAG_Bool(REGB4)) {
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
           nit_abort("Reciever is null", NULL, LOCATE_array, 246);
         }
         /* ./../lib/standard//collection//array.nit:654 */
@@ -714,28 +710,28 @@ val_t parser___Parser___parse(val_t p0){
       } else {
         /* ./parser//parser.nit:133 */
         REGB3 = TAG_Int(2);
-        REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
-        if (UNTAG_Bool(REGB4)) {
+        REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
+        if (UNTAG_Bool(REGB1)) {
         } else {
           /* ./../lib/standard//kernel.nit:207 */
           REGB3 = TAG_Bool((REGB2)==(REGB3));
           /* ./parser//parser.nit:133 */
-          REGB4 = REGB3;
+          REGB1 = REGB3;
         }
-        if (UNTAG_Bool(REGB4)) {
+        if (UNTAG_Bool(REGB1)) {
           /* ./parser//parser.nit:134 */
           fra.me.REG[4] = CALL_lexer___Lexer___next(fra.me.REG[1])(fra.me.REG[1]);
           /* ./parser//parser.nit:135 */
-          REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_EOF, ID_EOF)) /*cast EOF*/;
-          if (UNTAG_Bool(REGB4)) {
+          REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_EOF, ID_EOF)) /*cast EOF*/;
+          if (UNTAG_Bool(REGB1)) {
           } else {
             nit_abort("Assert failed", NULL, LOCATE_parser, 135);
           }
           /* ./parser//parser.nit:136 */
           fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[0])(fra.me.REG[0]);
           /* ./parser//parser.nit:137 */
-          REGB4 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_AModule, ID_AModule)) /*cast AModule*/;
-          if (UNTAG_Bool(REGB4)) {
+          REGB1 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_AModule, ID_AModule)) /*cast AModule*/;
+          if (UNTAG_Bool(REGB1)) {
           } else {
             nit_abort("Assert failed", NULL, LOCATE_parser, 137);
           }
@@ -749,14 +745,14 @@ val_t parser___Parser___parse(val_t p0){
           goto label1;
         } else {
           /* ./parser//parser.nit:141 */
-          REGB4 = TAG_Int(3);
-          REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
+          REGB1 = TAG_Int(3);
+          REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
           if (UNTAG_Bool(REGB3)) {
           } else {
             /* ./../lib/standard//kernel.nit:207 */
-            REGB4 = TAG_Bool((REGB2)==(REGB4));
+            REGB1 = TAG_Bool((REGB2)==(REGB1));
             /* ./parser//parser.nit:141 */
-            REGB3 = REGB4;
+            REGB3 = REGB1;
           }
           if (UNTAG_Bool(REGB3)) {
             /* ./parser//parser.nit:142 */
@@ -779,15 +775,7 @@ val_t parser___Parser___parse(val_t p0){
         }
       }
     }
-    /* ./parser//parser.nit:146 */
-    REGB3 = TAG_Bool(false);
-    if (UNTAG_Bool(REGB3)) {
-      goto label5;
-    }
   }
-  label5: while(0);
-  /* ./parser//parser.nit:148 */
-  nit_abort("Aborted", NULL, LOCATE_parser, 148);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
@@ -798,7 +786,7 @@ void parser___Parser___build_reduce_table(val_t p0){
   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.line = 150;
   fra.me.meth = LOCATE_parser___Parser___build_reduce_table;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -806,3473 +794,3473 @@ void parser___Parser___build_reduce_table(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   REGB0 = TAG_Int(692);
   fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
-  /* ./parser//parser.nit:155 */
+  /* ./parser//parser.nit:153 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction0_parser___ReduceAction0___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:156 */
+  /* ./parser//parser.nit:154 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction1_parser___ReduceAction1___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:157 */
+  /* ./parser//parser.nit:155 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction2_parser___ReduceAction2___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:158 */
+  /* ./parser//parser.nit:156 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction3_parser___ReduceAction3___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:159 */
+  /* ./parser//parser.nit:157 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction4_parser___ReduceAction4___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:160 */
+  /* ./parser//parser.nit:158 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction5_parser___ReduceAction5___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:161 */
+  /* ./parser//parser.nit:159 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction6_parser___ReduceAction6___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:162 */
+  /* ./parser//parser.nit:160 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction7_parser___ReduceAction7___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:163 */
+  /* ./parser//parser.nit:161 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction8_parser___ReduceAction8___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:164 */
+  /* ./parser//parser.nit:162 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction9_parser___ReduceAction9___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:165 */
+  /* ./parser//parser.nit:163 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction10_parser___ReduceAction10___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:166 */
+  /* ./parser//parser.nit:164 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction11_parser___ReduceAction11___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:167 */
+  /* ./parser//parser.nit:165 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction12_parser___ReduceAction12___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:168 */
+  /* ./parser//parser.nit:166 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction13_parser___ReduceAction13___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:169 */
+  /* ./parser//parser.nit:167 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction14_parser___ReduceAction14___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:170 */
+  /* ./parser//parser.nit:168 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction15_parser___ReduceAction15___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:171 */
+  /* ./parser//parser.nit:169 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction16_parser___ReduceAction16___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:172 */
+  /* ./parser//parser.nit:170 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction17_parser___ReduceAction17___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:173 */
+  /* ./parser//parser.nit:171 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction18_parser___ReduceAction18___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:174 */
+  /* ./parser//parser.nit:172 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction19_parser___ReduceAction19___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:175 */
+  /* ./parser//parser.nit:173 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction20_parser___ReduceAction20___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:176 */
+  /* ./parser//parser.nit:174 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction21_parser___ReduceAction21___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:177 */
+  /* ./parser//parser.nit:175 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction22_parser___ReduceAction22___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:178 */
+  /* ./parser//parser.nit:176 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction23_parser___ReduceAction23___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:179 */
+  /* ./parser//parser.nit:177 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction24_parser___ReduceAction24___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:180 */
+  /* ./parser//parser.nit:178 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction25_parser___ReduceAction25___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:181 */
+  /* ./parser//parser.nit:179 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction26_parser___ReduceAction26___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:182 */
+  /* ./parser//parser.nit:180 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction27_parser___ReduceAction27___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:183 */
+  /* ./parser//parser.nit:181 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction28_parser___ReduceAction28___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:184 */
+  /* ./parser//parser.nit:182 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction29_parser___ReduceAction29___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:185 */
+  /* ./parser//parser.nit:183 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction30_parser___ReduceAction30___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:186 */
+  /* ./parser//parser.nit:184 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_ReduceAction31_parser___ReduceAction31___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:187 */
+  /* ./parser//parser.nit:185 */
   REGB0 = TAG_Int(1);
   fra.me.REG[2] = NEW_ReduceAction32_parser___ReduceAction32___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:188 */
+  /* ./parser//parser.nit:186 */
   REGB0 = TAG_Int(2);
   fra.me.REG[2] = NEW_ReduceAction33_parser___ReduceAction33___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:189 */
+  /* ./parser//parser.nit:187 */
   REGB0 = TAG_Int(2);
   fra.me.REG[2] = NEW_ReduceAction34_parser___ReduceAction34___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:190 */
+  /* ./parser//parser.nit:188 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_ReduceAction35_parser___ReduceAction35___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:191 */
+  /* ./parser//parser.nit:189 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction36___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:192 */
+  /* ./parser//parser.nit:190 */
   REGB0 = TAG_Int(4);
   fra.me.REG[2] = NEW_ReduceAction37_parser___ReduceAction37___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:193 */
+  /* ./parser//parser.nit:191 */
   REGB0 = TAG_Int(4);
   fra.me.REG[2] = NEW_ReduceAction37_parser___ReduceAction37___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:194 */
+  /* ./parser//parser.nit:192 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction39_parser___ReduceAction39___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:195 */
+  /* ./parser//parser.nit:193 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction40_parser___ReduceAction40___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:196 */
+  /* ./parser//parser.nit:194 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction41_parser___ReduceAction41___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:197 */
+  /* ./parser//parser.nit:195 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction42_parser___ReduceAction42___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:198 */
+  /* ./parser//parser.nit:196 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction43_parser___ReduceAction43___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:199 */
+  /* ./parser//parser.nit:197 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction44_parser___ReduceAction44___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:200 */
+  /* ./parser//parser.nit:198 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction45_parser___ReduceAction45___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:201 */
+  /* ./parser//parser.nit:199 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction46_parser___ReduceAction46___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:202 */
+  /* ./parser//parser.nit:200 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction47_parser___ReduceAction47___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:203 */
+  /* ./parser//parser.nit:201 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction48_parser___ReduceAction48___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:204 */
+  /* ./parser//parser.nit:202 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction49_parser___ReduceAction49___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:205 */
+  /* ./parser//parser.nit:203 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction50_parser___ReduceAction50___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:206 */
+  /* ./parser//parser.nit:204 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction51_parser___ReduceAction51___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:207 */
+  /* ./parser//parser.nit:205 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction52_parser___ReduceAction52___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:208 */
+  /* ./parser//parser.nit:206 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction53_parser___ReduceAction53___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:209 */
+  /* ./parser//parser.nit:207 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_ReduceAction54_parser___ReduceAction54___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:210 */
+  /* ./parser//parser.nit:208 */
   REGB0 = TAG_Int(6);
   fra.me.REG[2] = NEW_ReduceAction55_parser___ReduceAction55___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:211 */
+  /* ./parser//parser.nit:209 */
   REGB0 = TAG_Int(6);
   fra.me.REG[2] = NEW_ReduceAction56_parser___ReduceAction56___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:212 */
+  /* ./parser//parser.nit:210 */
   REGB0 = TAG_Int(6);
   fra.me.REG[2] = NEW_ReduceAction57_parser___ReduceAction57___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:213 */
+  /* ./parser//parser.nit:211 */
   REGB0 = TAG_Int(6);
   fra.me.REG[2] = NEW_ReduceAction58_parser___ReduceAction58___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:214 */
+  /* ./parser//parser.nit:212 */
   REGB0 = TAG_Int(7);
   fra.me.REG[2] = NEW_ReduceAction59_parser___ReduceAction59___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:215 */
+  /* ./parser//parser.nit:213 */
   REGB0 = TAG_Int(7);
   fra.me.REG[2] = NEW_ReduceAction60_parser___ReduceAction60___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:216 */
+  /* ./parser//parser.nit:214 */
   REGB0 = TAG_Int(8);
   fra.me.REG[2] = NEW_ReduceAction61_parser___ReduceAction61___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:217 */
+  /* ./parser//parser.nit:215 */
   REGB0 = TAG_Int(9);
   fra.me.REG[2] = NEW_ReduceAction62_parser___ReduceAction62___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:218 */
+  /* ./parser//parser.nit:216 */
   REGB0 = TAG_Int(9);
   fra.me.REG[2] = NEW_ReduceAction63_parser___ReduceAction63___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:219 */
+  /* ./parser//parser.nit:217 */
   REGB0 = TAG_Int(10);
   fra.me.REG[2] = NEW_ReduceAction64_parser___ReduceAction64___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:220 */
+  /* ./parser//parser.nit:218 */
   REGB0 = TAG_Int(10);
   fra.me.REG[2] = NEW_ReduceAction65_parser___ReduceAction65___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:221 */
+  /* ./parser//parser.nit:219 */
   REGB0 = TAG_Int(11);
   fra.me.REG[2] = NEW_ReduceAction66_parser___ReduceAction66___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:222 */
+  /* ./parser//parser.nit:220 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction67_parser___ReduceAction67___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:223 */
+  /* ./parser//parser.nit:221 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction68___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:224 */
+  /* ./parser//parser.nit:222 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction69___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:225 */
+  /* ./parser//parser.nit:223 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction70_parser___ReduceAction70___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:226 */
+  /* ./parser//parser.nit:224 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction71___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:227 */
+  /* ./parser//parser.nit:225 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction72_parser___ReduceAction72___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:228 */
+  /* ./parser//parser.nit:226 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction73_parser___ReduceAction73___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:229 */
+  /* ./parser//parser.nit:227 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction74_parser___ReduceAction74___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:230 */
+  /* ./parser//parser.nit:228 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction75_parser___ReduceAction75___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:231 */
+  /* ./parser//parser.nit:229 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction76_parser___ReduceAction76___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:232 */
+  /* ./parser//parser.nit:230 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction77_parser___ReduceAction77___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:233 */
+  /* ./parser//parser.nit:231 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction78_parser___ReduceAction78___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:234 */
+  /* ./parser//parser.nit:232 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction79_parser___ReduceAction79___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:235 */
+  /* ./parser//parser.nit:233 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction80_parser___ReduceAction80___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:236 */
+  /* ./parser//parser.nit:234 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction81_parser___ReduceAction81___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:237 */
+  /* ./parser//parser.nit:235 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction82_parser___ReduceAction82___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:238 */
+  /* ./parser//parser.nit:236 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction83_parser___ReduceAction83___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:239 */
+  /* ./parser//parser.nit:237 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction84_parser___ReduceAction84___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:240 */
+  /* ./parser//parser.nit:238 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction85_parser___ReduceAction85___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:241 */
+  /* ./parser//parser.nit:239 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction86_parser___ReduceAction86___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:242 */
+  /* ./parser//parser.nit:240 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction87_parser___ReduceAction87___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:243 */
+  /* ./parser//parser.nit:241 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction88_parser___ReduceAction88___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:244 */
+  /* ./parser//parser.nit:242 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction89_parser___ReduceAction89___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:245 */
+  /* ./parser//parser.nit:243 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction90_parser___ReduceAction90___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:246 */
+  /* ./parser//parser.nit:244 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction91_parser___ReduceAction91___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:247 */
+  /* ./parser//parser.nit:245 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction92_parser___ReduceAction92___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:248 */
+  /* ./parser//parser.nit:246 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction93_parser___ReduceAction93___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:249 */
+  /* ./parser//parser.nit:247 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction94_parser___ReduceAction94___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:250 */
+  /* ./parser//parser.nit:248 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction95_parser___ReduceAction95___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:251 */
+  /* ./parser//parser.nit:249 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction96_parser___ReduceAction96___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:252 */
+  /* ./parser//parser.nit:250 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction97_parser___ReduceAction97___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:253 */
+  /* ./parser//parser.nit:251 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction98_parser___ReduceAction98___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:254 */
+  /* ./parser//parser.nit:252 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction99_parser___ReduceAction99___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:255 */
+  /* ./parser//parser.nit:253 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction100_parser___ReduceAction100___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:256 */
+  /* ./parser//parser.nit:254 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction101_parser___ReduceAction101___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:257 */
+  /* ./parser//parser.nit:255 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction102_parser___ReduceAction102___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:258 */
+  /* ./parser//parser.nit:256 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction103_parser___ReduceAction103___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:259 */
+  /* ./parser//parser.nit:257 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction104_parser___ReduceAction104___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:260 */
+  /* ./parser//parser.nit:258 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction105_parser___ReduceAction105___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:261 */
+  /* ./parser//parser.nit:259 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction106_parser___ReduceAction106___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:262 */
+  /* ./parser//parser.nit:260 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction107_parser___ReduceAction107___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:263 */
+  /* ./parser//parser.nit:261 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction108_parser___ReduceAction108___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:264 */
+  /* ./parser//parser.nit:262 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction109_parser___ReduceAction109___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:265 */
+  /* ./parser//parser.nit:263 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction110_parser___ReduceAction110___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:266 */
+  /* ./parser//parser.nit:264 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction111_parser___ReduceAction111___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:267 */
+  /* ./parser//parser.nit:265 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction112_parser___ReduceAction112___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:268 */
+  /* ./parser//parser.nit:266 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction113_parser___ReduceAction113___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:269 */
+  /* ./parser//parser.nit:267 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction114_parser___ReduceAction114___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:270 */
+  /* ./parser//parser.nit:268 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction115_parser___ReduceAction115___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:271 */
+  /* ./parser//parser.nit:269 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction116_parser___ReduceAction116___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:272 */
+  /* ./parser//parser.nit:270 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction117_parser___ReduceAction117___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:273 */
+  /* ./parser//parser.nit:271 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction118_parser___ReduceAction118___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:274 */
+  /* ./parser//parser.nit:272 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction119_parser___ReduceAction119___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:275 */
+  /* ./parser//parser.nit:273 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction120_parser___ReduceAction120___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:276 */
+  /* ./parser//parser.nit:274 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction121_parser___ReduceAction121___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:277 */
+  /* ./parser//parser.nit:275 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction122_parser___ReduceAction122___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:278 */
+  /* ./parser//parser.nit:276 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction123_parser___ReduceAction123___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:279 */
+  /* ./parser//parser.nit:277 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction124_parser___ReduceAction124___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:280 */
+  /* ./parser//parser.nit:278 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction125_parser___ReduceAction125___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:281 */
+  /* ./parser//parser.nit:279 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction126_parser___ReduceAction126___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:282 */
+  /* ./parser//parser.nit:280 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction127_parser___ReduceAction127___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:283 */
+  /* ./parser//parser.nit:281 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction128_parser___ReduceAction128___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:284 */
+  /* ./parser//parser.nit:282 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction129_parser___ReduceAction129___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:285 */
+  /* ./parser//parser.nit:283 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction130_parser___ReduceAction130___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:286 */
+  /* ./parser//parser.nit:284 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction131_parser___ReduceAction131___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:287 */
+  /* ./parser//parser.nit:285 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction132_parser___ReduceAction132___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:288 */
+  /* ./parser//parser.nit:286 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction133_parser___ReduceAction133___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:289 */
+  /* ./parser//parser.nit:287 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction134_parser___ReduceAction134___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:290 */
+  /* ./parser//parser.nit:288 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction135_parser___ReduceAction135___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:291 */
+  /* ./parser//parser.nit:289 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction136_parser___ReduceAction136___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:292 */
+  /* ./parser//parser.nit:290 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction137_parser___ReduceAction137___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:293 */
+  /* ./parser//parser.nit:291 */
   REGB0 = TAG_Int(12);
   fra.me.REG[2] = NEW_ReduceAction138_parser___ReduceAction138___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:294 */
+  /* ./parser//parser.nit:292 */
   REGB0 = TAG_Int(13);
   fra.me.REG[2] = NEW_ReduceAction139_parser___ReduceAction139___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:295 */
+  /* ./parser//parser.nit:293 */
   REGB0 = TAG_Int(13);
   fra.me.REG[2] = NEW_ReduceAction140_parser___ReduceAction140___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:296 */
+  /* ./parser//parser.nit:294 */
   REGB0 = TAG_Int(14);
   fra.me.REG[2] = NEW_ReduceAction141_parser___ReduceAction141___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:297 */
+  /* ./parser//parser.nit:295 */
   REGB0 = TAG_Int(14);
   fra.me.REG[2] = NEW_ReduceAction142_parser___ReduceAction142___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:298 */
+  /* ./parser//parser.nit:296 */
   REGB0 = TAG_Int(15);
   fra.me.REG[2] = NEW_ReduceAction143_parser___ReduceAction143___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:299 */
+  /* ./parser//parser.nit:297 */
   REGB0 = TAG_Int(15);
   fra.me.REG[2] = NEW_ReduceAction144_parser___ReduceAction144___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:300 */
+  /* ./parser//parser.nit:298 */
   REGB0 = TAG_Int(16);
   fra.me.REG[2] = NEW_ReduceAction145_parser___ReduceAction145___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:301 */
+  /* ./parser//parser.nit:299 */
   REGB0 = TAG_Int(16);
   fra.me.REG[2] = NEW_ReduceAction146_parser___ReduceAction146___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:302 */
+  /* ./parser//parser.nit:300 */
   REGB0 = TAG_Int(16);
   fra.me.REG[2] = NEW_ReduceAction147_parser___ReduceAction147___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:303 */
+  /* ./parser//parser.nit:301 */
   REGB0 = TAG_Int(16);
   fra.me.REG[2] = NEW_ReduceAction148_parser___ReduceAction148___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:304 */
+  /* ./parser//parser.nit:302 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction149_parser___ReduceAction149___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:305 */
+  /* ./parser//parser.nit:303 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction150_parser___ReduceAction150___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:306 */
+  /* ./parser//parser.nit:304 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction151_parser___ReduceAction151___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:307 */
+  /* ./parser//parser.nit:305 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction152_parser___ReduceAction152___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:308 */
+  /* ./parser//parser.nit:306 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction153_parser___ReduceAction153___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:309 */
+  /* ./parser//parser.nit:307 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction154_parser___ReduceAction154___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:310 */
+  /* ./parser//parser.nit:308 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction155_parser___ReduceAction155___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:311 */
+  /* ./parser//parser.nit:309 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction156_parser___ReduceAction156___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:312 */
+  /* ./parser//parser.nit:310 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction157_parser___ReduceAction157___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:313 */
+  /* ./parser//parser.nit:311 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction158_parser___ReduceAction158___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:314 */
+  /* ./parser//parser.nit:312 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction159_parser___ReduceAction159___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:315 */
+  /* ./parser//parser.nit:313 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction160_parser___ReduceAction160___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:316 */
+  /* ./parser//parser.nit:314 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction161_parser___ReduceAction161___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:317 */
+  /* ./parser//parser.nit:315 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction162_parser___ReduceAction162___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:318 */
+  /* ./parser//parser.nit:316 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction163_parser___ReduceAction163___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:319 */
+  /* ./parser//parser.nit:317 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction164_parser___ReduceAction164___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:320 */
+  /* ./parser//parser.nit:318 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction165_parser___ReduceAction165___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:321 */
+  /* ./parser//parser.nit:319 */
   REGB0 = TAG_Int(17);
   fra.me.REG[2] = NEW_ReduceAction166_parser___ReduceAction166___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:322 */
+  /* ./parser//parser.nit:320 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction167_parser___ReduceAction167___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:323 */
+  /* ./parser//parser.nit:321 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction168_parser___ReduceAction168___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:324 */
+  /* ./parser//parser.nit:322 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction169___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:325 */
+  /* ./parser//parser.nit:323 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction170___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:326 */
+  /* ./parser//parser.nit:324 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction171_parser___ReduceAction171___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:327 */
+  /* ./parser//parser.nit:325 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction172_parser___ReduceAction172___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:328 */
+  /* ./parser//parser.nit:326 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction173_parser___ReduceAction173___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:329 */
+  /* ./parser//parser.nit:327 */
   REGB0 = TAG_Int(18);
   fra.me.REG[2] = NEW_ReduceAction174_parser___ReduceAction174___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:330 */
+  /* ./parser//parser.nit:328 */
   REGB0 = TAG_Int(19);
   fra.me.REG[2] = NEW_ReduceAction175_parser___ReduceAction175___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:331 */
+  /* ./parser//parser.nit:329 */
   REGB0 = TAG_Int(19);
   fra.me.REG[2] = NEW_ReduceAction176_parser___ReduceAction176___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:332 */
+  /* ./parser//parser.nit:330 */
   REGB0 = TAG_Int(19);
   fra.me.REG[2] = NEW_ReduceAction177_parser___ReduceAction177___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:333 */
+  /* ./parser//parser.nit:331 */
   REGB0 = TAG_Int(19);
   fra.me.REG[2] = NEW_ReduceAction178_parser___ReduceAction178___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:334 */
+  /* ./parser//parser.nit:332 */
   REGB0 = TAG_Int(20);
   fra.me.REG[2] = NEW_ReduceAction179_parser___ReduceAction179___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:335 */
+  /* ./parser//parser.nit:333 */
   REGB0 = TAG_Int(20);
   fra.me.REG[2] = NEW_ReduceAction180_parser___ReduceAction180___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:336 */
+  /* ./parser//parser.nit:334 */
   REGB0 = TAG_Int(20);
   fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction181___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:337 */
+  /* ./parser//parser.nit:335 */
   REGB0 = TAG_Int(21);
   fra.me.REG[2] = NEW_ReduceAction182_parser___ReduceAction182___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:338 */
+  /* ./parser//parser.nit:336 */
   REGB0 = TAG_Int(22);
   fra.me.REG[2] = NEW_ReduceAction183_parser___ReduceAction183___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:339 */
+  /* ./parser//parser.nit:337 */
   REGB0 = TAG_Int(22);
   fra.me.REG[2] = NEW_ReduceAction184_parser___ReduceAction184___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:340 */
+  /* ./parser//parser.nit:338 */
   REGB0 = TAG_Int(22);
   fra.me.REG[2] = NEW_ReduceAction185_parser___ReduceAction185___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:341 */
+  /* ./parser//parser.nit:339 */
   REGB0 = TAG_Int(23);
   fra.me.REG[2] = NEW_ReduceAction186_parser___ReduceAction186___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:342 */
+  /* ./parser//parser.nit:340 */
   REGB0 = TAG_Int(24);
   fra.me.REG[2] = NEW_ReduceAction187_parser___ReduceAction187___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:343 */
+  /* ./parser//parser.nit:341 */
   REGB0 = TAG_Int(24);
   fra.me.REG[2] = NEW_ReduceAction188_parser___ReduceAction188___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:344 */
+  /* ./parser//parser.nit:342 */
   REGB0 = TAG_Int(24);
   fra.me.REG[2] = NEW_ReduceAction189_parser___ReduceAction189___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:345 */
+  /* ./parser//parser.nit:343 */
   REGB0 = TAG_Int(24);
   fra.me.REG[2] = NEW_ReduceAction190_parser___ReduceAction190___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:346 */
+  /* ./parser//parser.nit:344 */
   REGB0 = TAG_Int(24);
   fra.me.REG[2] = NEW_ReduceAction191_parser___ReduceAction191___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:347 */
+  /* ./parser//parser.nit:345 */
   REGB0 = TAG_Int(24);
   fra.me.REG[2] = NEW_ReduceAction192_parser___ReduceAction192___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:348 */
+  /* ./parser//parser.nit:346 */
   REGB0 = TAG_Int(25);
   fra.me.REG[2] = NEW_ReduceAction193_parser___ReduceAction193___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:349 */
+  /* ./parser//parser.nit:347 */
   REGB0 = TAG_Int(26);
   fra.me.REG[2] = NEW_ReduceAction194_parser___ReduceAction194___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:350 */
+  /* ./parser//parser.nit:348 */
   REGB0 = TAG_Int(26);
   fra.me.REG[2] = NEW_ReduceAction195_parser___ReduceAction195___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:351 */
+  /* ./parser//parser.nit:349 */
   REGB0 = TAG_Int(26);
   fra.me.REG[2] = NEW_ReduceAction196_parser___ReduceAction196___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:352 */
+  /* ./parser//parser.nit:350 */
   REGB0 = TAG_Int(26);
   fra.me.REG[2] = NEW_ReduceAction197_parser___ReduceAction197___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:353 */
+  /* ./parser//parser.nit:351 */
   REGB0 = TAG_Int(27);
   fra.me.REG[2] = NEW_ReduceAction198_parser___ReduceAction198___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:354 */
+  /* ./parser//parser.nit:352 */
   REGB0 = TAG_Int(27);
   fra.me.REG[2] = NEW_ReduceAction199_parser___ReduceAction199___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:355 */
+  /* ./parser//parser.nit:353 */
   REGB0 = TAG_Int(28);
   fra.me.REG[2] = NEW_ReduceAction200_parser___ReduceAction200___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:356 */
+  /* ./parser//parser.nit:354 */
   REGB0 = TAG_Int(29);
   fra.me.REG[2] = NEW_ReduceAction200_parser___ReduceAction200___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:357 */
+  /* ./parser//parser.nit:355 */
   REGB0 = TAG_Int(30);
   fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:358 */
+  /* ./parser//parser.nit:356 */
   REGB0 = TAG_Int(30);
   fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:359 */
+  /* ./parser//parser.nit:357 */
   REGB0 = TAG_Int(30);
   fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:360 */
+  /* ./parser//parser.nit:358 */
   REGB0 = TAG_Int(30);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:361 */
+  /* ./parser//parser.nit:359 */
   REGB0 = TAG_Int(31);
   fra.me.REG[2] = NEW_ReduceAction206_parser___ReduceAction206___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:362 */
+  /* ./parser//parser.nit:360 */
   REGB0 = TAG_Int(31);
   fra.me.REG[2] = NEW_ReduceAction207_parser___ReduceAction207___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:363 */
+  /* ./parser//parser.nit:361 */
   REGB0 = TAG_Int(32);
   fra.me.REG[2] = NEW_ReduceAction208_parser___ReduceAction208___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:364 */
+  /* ./parser//parser.nit:362 */
   REGB0 = TAG_Int(32);
   fra.me.REG[2] = NEW_ReduceAction209_parser___ReduceAction209___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:365 */
+  /* ./parser//parser.nit:363 */
   REGB0 = TAG_Int(33);
   fra.me.REG[2] = NEW_ReduceAction210_parser___ReduceAction210___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:366 */
+  /* ./parser//parser.nit:364 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:367 */
+  /* ./parser//parser.nit:365 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:368 */
+  /* ./parser//parser.nit:366 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction213_parser___ReduceAction213___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:369 */
+  /* ./parser//parser.nit:367 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction214_parser___ReduceAction214___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:370 */
+  /* ./parser//parser.nit:368 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction215_parser___ReduceAction215___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:371 */
+  /* ./parser//parser.nit:369 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction216_parser___ReduceAction216___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:372 */
+  /* ./parser//parser.nit:370 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction217_parser___ReduceAction217___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:373 */
+  /* ./parser//parser.nit:371 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction218_parser___ReduceAction218___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:374 */
+  /* ./parser//parser.nit:372 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction219_parser___ReduceAction219___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:375 */
+  /* ./parser//parser.nit:373 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction220_parser___ReduceAction220___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:376 */
+  /* ./parser//parser.nit:374 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction221_parser___ReduceAction221___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:377 */
+  /* ./parser//parser.nit:375 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction222_parser___ReduceAction222___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:378 */
+  /* ./parser//parser.nit:376 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction223_parser___ReduceAction223___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:379 */
+  /* ./parser//parser.nit:377 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:380 */
+  /* ./parser//parser.nit:378 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:381 */
+  /* ./parser//parser.nit:379 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:382 */
+  /* ./parser//parser.nit:380 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:383 */
+  /* ./parser//parser.nit:381 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:384 */
+  /* ./parser//parser.nit:382 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:385 */
+  /* ./parser//parser.nit:383 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:386 */
+  /* ./parser//parser.nit:384 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:387 */
+  /* ./parser//parser.nit:385 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:388 */
+  /* ./parser//parser.nit:386 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:389 */
+  /* ./parser//parser.nit:387 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:390 */
+  /* ./parser//parser.nit:388 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:391 */
+  /* ./parser//parser.nit:389 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:392 */
+  /* ./parser//parser.nit:390 */
   REGB0 = TAG_Int(34);
   fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:393 */
+  /* ./parser//parser.nit:391 */
   REGB0 = TAG_Int(35);
   fra.me.REG[2] = NEW_ReduceAction238_parser___ReduceAction238___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:394 */
+  /* ./parser//parser.nit:392 */
   REGB0 = TAG_Int(36);
   fra.me.REG[2] = NEW_ReduceAction239_parser___ReduceAction239___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:395 */
+  /* ./parser//parser.nit:393 */
   REGB0 = TAG_Int(36);
   fra.me.REG[2] = NEW_ReduceAction240_parser___ReduceAction240___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:396 */
+  /* ./parser//parser.nit:394 */
   REGB0 = TAG_Int(37);
   fra.me.REG[2] = NEW_ReduceAction241_parser___ReduceAction241___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:397 */
+  /* ./parser//parser.nit:395 */
   REGB0 = TAG_Int(37);
   fra.me.REG[2] = NEW_ReduceAction242_parser___ReduceAction242___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:398 */
+  /* ./parser//parser.nit:396 */
   REGB0 = TAG_Int(37);
   fra.me.REG[2] = NEW_ReduceAction243_parser___ReduceAction243___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:399 */
+  /* ./parser//parser.nit:397 */
   REGB0 = TAG_Int(37);
   fra.me.REG[2] = NEW_ReduceAction244_parser___ReduceAction244___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:400 */
+  /* ./parser//parser.nit:398 */
   REGB0 = TAG_Int(37);
   fra.me.REG[2] = NEW_ReduceAction245_parser___ReduceAction245___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:401 */
+  /* ./parser//parser.nit:399 */
   REGB0 = TAG_Int(37);
   fra.me.REG[2] = NEW_ReduceAction246_parser___ReduceAction246___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:402 */
+  /* ./parser//parser.nit:400 */
   REGB0 = TAG_Int(38);
   fra.me.REG[2] = NEW_ReduceAction247_parser___ReduceAction247___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:403 */
+  /* ./parser//parser.nit:401 */
   REGB0 = TAG_Int(38);
   fra.me.REG[2] = NEW_ReduceAction248_parser___ReduceAction248___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:404 */
+  /* ./parser//parser.nit:402 */
   REGB0 = TAG_Int(38);
   fra.me.REG[2] = NEW_ReduceAction249_parser___ReduceAction249___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:405 */
+  /* ./parser//parser.nit:403 */
   REGB0 = TAG_Int(38);
   fra.me.REG[2] = NEW_ReduceAction250_parser___ReduceAction250___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:406 */
+  /* ./parser//parser.nit:404 */
   REGB0 = TAG_Int(39);
   fra.me.REG[2] = NEW_ReduceAction251_parser___ReduceAction251___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:407 */
+  /* ./parser//parser.nit:405 */
   REGB0 = TAG_Int(39);
   fra.me.REG[2] = NEW_ReduceAction252_parser___ReduceAction252___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:408 */
+  /* ./parser//parser.nit:406 */
   REGB0 = TAG_Int(40);
   fra.me.REG[2] = NEW_ReduceAction253_parser___ReduceAction253___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:409 */
+  /* ./parser//parser.nit:407 */
   REGB0 = TAG_Int(41);
   fra.me.REG[2] = NEW_ReduceAction254_parser___ReduceAction254___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:410 */
+  /* ./parser//parser.nit:408 */
   REGB0 = TAG_Int(41);
   fra.me.REG[2] = NEW_ReduceAction255_parser___ReduceAction255___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:411 */
+  /* ./parser//parser.nit:409 */
   REGB0 = TAG_Int(41);
   fra.me.REG[2] = NEW_ReduceAction256_parser___ReduceAction256___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:412 */
+  /* ./parser//parser.nit:410 */
   REGB0 = TAG_Int(41);
   fra.me.REG[2] = NEW_ReduceAction257_parser___ReduceAction257___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:413 */
+  /* ./parser//parser.nit:411 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction258_parser___ReduceAction258___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:414 */
+  /* ./parser//parser.nit:412 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction259_parser___ReduceAction259___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:415 */
+  /* ./parser//parser.nit:413 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction260_parser___ReduceAction260___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:416 */
+  /* ./parser//parser.nit:414 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction261_parser___ReduceAction261___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:417 */
+  /* ./parser//parser.nit:415 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction262_parser___ReduceAction262___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:418 */
+  /* ./parser//parser.nit:416 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction263_parser___ReduceAction263___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:419 */
+  /* ./parser//parser.nit:417 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction264_parser___ReduceAction264___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:420 */
+  /* ./parser//parser.nit:418 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction265_parser___ReduceAction265___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:421 */
+  /* ./parser//parser.nit:419 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction266_parser___ReduceAction266___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:422 */
+  /* ./parser//parser.nit:420 */
   REGB0 = TAG_Int(42);
   fra.me.REG[2] = NEW_ReduceAction267_parser___ReduceAction267___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:423 */
+  /* ./parser//parser.nit:421 */
   REGB0 = TAG_Int(43);
   fra.me.REG[2] = NEW_ReduceAction268_parser___ReduceAction268___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:424 */
+  /* ./parser//parser.nit:422 */
   REGB0 = TAG_Int(43);
   fra.me.REG[2] = NEW_ReduceAction269_parser___ReduceAction269___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:425 */
+  /* ./parser//parser.nit:423 */
   REGB0 = TAG_Int(44);
   fra.me.REG[2] = NEW_ReduceAction270_parser___ReduceAction270___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:426 */
+  /* ./parser//parser.nit:424 */
   REGB0 = TAG_Int(44);
   fra.me.REG[2] = NEW_ReduceAction271_parser___ReduceAction271___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:427 */
+  /* ./parser//parser.nit:425 */
   REGB0 = TAG_Int(45);
   fra.me.REG[2] = NEW_ReduceAction272_parser___ReduceAction272___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:428 */
+  /* ./parser//parser.nit:426 */
   REGB0 = TAG_Int(45);
   fra.me.REG[2] = NEW_ReduceAction273_parser___ReduceAction273___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:429 */
+  /* ./parser//parser.nit:427 */
   REGB0 = TAG_Int(45);
   fra.me.REG[2] = NEW_ReduceAction274_parser___ReduceAction274___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:430 */
+  /* ./parser//parser.nit:428 */
   REGB0 = TAG_Int(45);
   fra.me.REG[2] = NEW_ReduceAction275_parser___ReduceAction275___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:431 */
+  /* ./parser//parser.nit:429 */
   REGB0 = TAG_Int(45);
   fra.me.REG[2] = NEW_ReduceAction276_parser___ReduceAction276___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:432 */
+  /* ./parser//parser.nit:430 */
   REGB0 = TAG_Int(46);
   fra.me.REG[2] = NEW_ReduceAction210_parser___ReduceAction210___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:433 */
+  /* ./parser//parser.nit:431 */
   REGB0 = TAG_Int(46);
   fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction36___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:434 */
+  /* ./parser//parser.nit:432 */
   REGB0 = TAG_Int(47);
   fra.me.REG[2] = NEW_ReduceAction279_parser___ReduceAction279___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:435 */
+  /* ./parser//parser.nit:433 */
   REGB0 = TAG_Int(47);
   fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction280___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:436 */
+  /* ./parser//parser.nit:434 */
   REGB0 = TAG_Int(48);
   fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction281___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:437 */
+  /* ./parser//parser.nit:435 */
   REGB0 = TAG_Int(48);
   fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction282___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:438 */
+  /* ./parser//parser.nit:436 */
   REGB0 = TAG_Int(49);
   fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction283___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:439 */
+  /* ./parser//parser.nit:437 */
   REGB0 = TAG_Int(49);
   fra.me.REG[2] = NEW_ReduceAction284_parser___ReduceAction284___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:440 */
+  /* ./parser//parser.nit:438 */
   REGB0 = TAG_Int(50);
   fra.me.REG[2] = NEW_ReduceAction285_parser___ReduceAction285___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:441 */
+  /* ./parser//parser.nit:439 */
   REGB0 = TAG_Int(50);
   fra.me.REG[2] = NEW_ReduceAction286_parser___ReduceAction286___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:442 */
+  /* ./parser//parser.nit:440 */
   REGB0 = TAG_Int(50);
   fra.me.REG[2] = NEW_ReduceAction287_parser___ReduceAction287___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:443 */
+  /* ./parser//parser.nit:441 */
   REGB0 = TAG_Int(50);
   fra.me.REG[2] = NEW_ReduceAction288_parser___ReduceAction288___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:444 */
+  /* ./parser//parser.nit:442 */
   REGB0 = TAG_Int(51);
   fra.me.REG[2] = NEW_ReduceAction289_parser___ReduceAction289___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:445 */
+  /* ./parser//parser.nit:443 */
   REGB0 = TAG_Int(52);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:446 */
+  /* ./parser//parser.nit:444 */
   REGB0 = TAG_Int(52);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:447 */
+  /* ./parser//parser.nit:445 */
   REGB0 = TAG_Int(52);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:448 */
+  /* ./parser//parser.nit:446 */
   REGB0 = TAG_Int(52);
   fra.me.REG[2] = NEW_ReduceAction293_parser___ReduceAction293___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:449 */
+  /* ./parser//parser.nit:447 */
   REGB0 = TAG_Int(53);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:450 */
+  /* ./parser//parser.nit:448 */
   REGB0 = TAG_Int(53);
   fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:451 */
+  /* ./parser//parser.nit:449 */
   REGB0 = TAG_Int(54);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:452 */
+  /* ./parser//parser.nit:450 */
   REGB0 = TAG_Int(54);
   fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:453 */
+  /* ./parser//parser.nit:451 */
   REGB0 = TAG_Int(54);
   fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:454 */
+  /* ./parser//parser.nit:452 */
   REGB0 = TAG_Int(54);
   fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:455 */
+  /* ./parser//parser.nit:453 */
   REGB0 = TAG_Int(55);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:456 */
+  /* ./parser//parser.nit:454 */
   REGB0 = TAG_Int(55);
   fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:457 */
+  /* ./parser//parser.nit:455 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:458 */
+  /* ./parser//parser.nit:456 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:459 */
+  /* ./parser//parser.nit:457 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:460 */
+  /* ./parser//parser.nit:458 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:461 */
+  /* ./parser//parser.nit:459 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:462 */
+  /* ./parser//parser.nit:460 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:463 */
+  /* ./parser//parser.nit:461 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:464 */
+  /* ./parser//parser.nit:462 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:465 */
+  /* ./parser//parser.nit:463 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:466 */
+  /* ./parser//parser.nit:464 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:467 */
+  /* ./parser//parser.nit:465 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:468 */
+  /* ./parser//parser.nit:466 */
   REGB0 = TAG_Int(56);
   fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:469 */
+  /* ./parser//parser.nit:467 */
   REGB0 = TAG_Int(57);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:470 */
+  /* ./parser//parser.nit:468 */
   REGB0 = TAG_Int(57);
   fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:471 */
+  /* ./parser//parser.nit:469 */
   REGB0 = TAG_Int(57);
   fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:472 */
+  /* ./parser//parser.nit:470 */
   REGB0 = TAG_Int(58);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:473 */
+  /* ./parser//parser.nit:471 */
   REGB0 = TAG_Int(58);
   fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:474 */
+  /* ./parser//parser.nit:472 */
   REGB0 = TAG_Int(58);
   fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:475 */
+  /* ./parser//parser.nit:473 */
   REGB0 = TAG_Int(58);
   fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:476 */
+  /* ./parser//parser.nit:474 */
   REGB0 = TAG_Int(59);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:477 */
+  /* ./parser//parser.nit:475 */
   REGB0 = TAG_Int(59);
   fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:478 */
+  /* ./parser//parser.nit:476 */
   REGB0 = TAG_Int(59);
   fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:479 */
+  /* ./parser//parser.nit:477 */
   REGB0 = TAG_Int(60);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:480 */
+  /* ./parser//parser.nit:478 */
   REGB0 = TAG_Int(60);
   fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:481 */
+  /* ./parser//parser.nit:479 */
   REGB0 = TAG_Int(60);
   fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction326___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:482 */
+  /* ./parser//parser.nit:480 */
   REGB0 = TAG_Int(60);
   fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction327___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:483 */
+  /* ./parser//parser.nit:481 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction328___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:484 */
+  /* ./parser//parser.nit:482 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction329___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:485 */
+  /* ./parser//parser.nit:483 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:486 */
+  /* ./parser//parser.nit:484 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:487 */
+  /* ./parser//parser.nit:485 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:488 */
+  /* ./parser//parser.nit:486 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:489 */
+  /* ./parser//parser.nit:487 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:490 */
+  /* ./parser//parser.nit:488 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:491 */
+  /* ./parser//parser.nit:489 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction336___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:492 */
+  /* ./parser//parser.nit:490 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:493 */
+  /* ./parser//parser.nit:491 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction338_parser___ReduceAction338___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:494 */
+  /* ./parser//parser.nit:492 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction339_parser___ReduceAction339___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:495 */
+  /* ./parser//parser.nit:493 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction340_parser___ReduceAction340___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:496 */
+  /* ./parser//parser.nit:494 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:497 */
+  /* ./parser//parser.nit:495 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:498 */
+  /* ./parser//parser.nit:496 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:499 */
+  /* ./parser//parser.nit:497 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:500 */
+  /* ./parser//parser.nit:498 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:501 */
+  /* ./parser//parser.nit:499 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:502 */
+  /* ./parser//parser.nit:500 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:503 */
+  /* ./parser//parser.nit:501 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:504 */
+  /* ./parser//parser.nit:502 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:505 */
+  /* ./parser//parser.nit:503 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:506 */
+  /* ./parser//parser.nit:504 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:507 */
+  /* ./parser//parser.nit:505 */
   REGB0 = TAG_Int(61);
   fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:508 */
+  /* ./parser//parser.nit:506 */
   REGB0 = TAG_Int(62);
   fra.me.REG[2] = NEW_ReduceAction353_parser___ReduceAction353___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:509 */
+  /* ./parser//parser.nit:507 */
   REGB0 = TAG_Int(62);
   fra.me.REG[2] = NEW_ReduceAction354_parser___ReduceAction354___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:510 */
+  /* ./parser//parser.nit:508 */
   REGB0 = TAG_Int(63);
   fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction355___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:511 */
+  /* ./parser//parser.nit:509 */
   REGB0 = TAG_Int(64);
   fra.me.REG[2] = NEW_ReduceAction356_parser___ReduceAction356___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:512 */
+  /* ./parser//parser.nit:510 */
   REGB0 = TAG_Int(65);
   fra.me.REG[2] = NEW_ReduceAction355_parser___ReduceAction355___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:513 */
+  /* ./parser//parser.nit:511 */
   REGB0 = TAG_Int(66);
   fra.me.REG[2] = NEW_ReduceAction358_parser___ReduceAction358___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:514 */
+  /* ./parser//parser.nit:512 */
   REGB0 = TAG_Int(67);
   fra.me.REG[2] = NEW_ReduceAction359_parser___ReduceAction359___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:515 */
+  /* ./parser//parser.nit:513 */
   REGB0 = TAG_Int(68);
   fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction360___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:516 */
+  /* ./parser//parser.nit:514 */
   REGB0 = TAG_Int(68);
   fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction361___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:517 */
+  /* ./parser//parser.nit:515 */
   REGB0 = TAG_Int(68);
   fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction181___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:518 */
+  /* ./parser//parser.nit:516 */
   REGB0 = TAG_Int(68);
   fra.me.REG[2] = NEW_ReduceAction363_parser___ReduceAction363___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:519 */
+  /* ./parser//parser.nit:517 */
   REGB0 = TAG_Int(69);
   fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction360___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:520 */
+  /* ./parser//parser.nit:518 */
   REGB0 = TAG_Int(69);
   fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction361___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:521 */
+  /* ./parser//parser.nit:519 */
   REGB0 = TAG_Int(69);
   fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction366___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:522 */
+  /* ./parser//parser.nit:520 */
   REGB0 = TAG_Int(69);
   fra.me.REG[2] = NEW_ReduceAction181_parser___ReduceAction181___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:523 */
+  /* ./parser//parser.nit:521 */
   REGB0 = TAG_Int(69);
   fra.me.REG[2] = NEW_ReduceAction363_parser___ReduceAction363___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:524 */
+  /* ./parser//parser.nit:522 */
   REGB0 = TAG_Int(70);
   fra.me.REG[2] = NEW_ReduceAction360_parser___ReduceAction360___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:525 */
+  /* ./parser//parser.nit:523 */
   REGB0 = TAG_Int(70);
   fra.me.REG[2] = NEW_ReduceAction361_parser___ReduceAction361___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:526 */
+  /* ./parser//parser.nit:524 */
   REGB0 = TAG_Int(71);
   fra.me.REG[2] = NEW_ReduceAction371_parser___ReduceAction371___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:527 */
+  /* ./parser//parser.nit:525 */
   REGB0 = TAG_Int(72);
   fra.me.REG[2] = NEW_ReduceAction372_parser___ReduceAction372___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:528 */
+  /* ./parser//parser.nit:526 */
   REGB0 = TAG_Int(72);
   fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction373___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:529 */
+  /* ./parser//parser.nit:527 */
   REGB0 = TAG_Int(73);
   fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction374___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:530 */
+  /* ./parser//parser.nit:528 */
   REGB0 = TAG_Int(73);
   fra.me.REG[2] = NEW_ReduceAction375_parser___ReduceAction375___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:531 */
+  /* ./parser//parser.nit:529 */
   REGB0 = TAG_Int(74);
   fra.me.REG[2] = NEW_ReduceAction376_parser___ReduceAction376___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:532 */
+  /* ./parser//parser.nit:530 */
   REGB0 = TAG_Int(74);
   fra.me.REG[2] = NEW_ReduceAction377_parser___ReduceAction377___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:533 */
+  /* ./parser//parser.nit:531 */
   REGB0 = TAG_Int(74);
   fra.me.REG[2] = NEW_ReduceAction378_parser___ReduceAction378___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:534 */
+  /* ./parser//parser.nit:532 */
   REGB0 = TAG_Int(75);
   fra.me.REG[2] = NEW_ReduceAction379_parser___ReduceAction379___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:535 */
+  /* ./parser//parser.nit:533 */
   REGB0 = TAG_Int(76);
   fra.me.REG[2] = NEW_ReduceAction380_parser___ReduceAction380___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:536 */
+  /* ./parser//parser.nit:534 */
   REGB0 = TAG_Int(77);
   fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction381___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:537 */
+  /* ./parser//parser.nit:535 */
   REGB0 = TAG_Int(77);
   fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction381___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:538 */
+  /* ./parser//parser.nit:536 */
   REGB0 = TAG_Int(78);
   fra.me.REG[2] = NEW_ReduceAction383_parser___ReduceAction383___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:539 */
+  /* ./parser//parser.nit:537 */
   REGB0 = TAG_Int(78);
   fra.me.REG[2] = NEW_ReduceAction384_parser___ReduceAction384___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:540 */
+  /* ./parser//parser.nit:538 */
   REGB0 = TAG_Int(78);
   fra.me.REG[2] = NEW_ReduceAction36_parser___ReduceAction36___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:541 */
+  /* ./parser//parser.nit:539 */
   REGB0 = TAG_Int(79);
   fra.me.REG[2] = NEW_ReduceAction386_parser___ReduceAction386___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:542 */
+  /* ./parser//parser.nit:540 */
   REGB0 = TAG_Int(79);
   fra.me.REG[2] = NEW_ReduceAction387_parser___ReduceAction387___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:543 */
+  /* ./parser//parser.nit:541 */
   REGB0 = TAG_Int(80);
   fra.me.REG[2] = NEW_ReduceAction388_parser___ReduceAction388___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:544 */
+  /* ./parser//parser.nit:542 */
   REGB0 = TAG_Int(80);
   fra.me.REG[2] = NEW_ReduceAction389_parser___ReduceAction389___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:545 */
+  /* ./parser//parser.nit:543 */
   REGB0 = TAG_Int(80);
   fra.me.REG[2] = NEW_ReduceAction381_parser___ReduceAction381___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:546 */
+  /* ./parser//parser.nit:544 */
   REGB0 = TAG_Int(81);
   fra.me.REG[2] = NEW_ReduceAction66_parser___ReduceAction66___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:547 */
+  /* ./parser//parser.nit:545 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction67_parser___ReduceAction67___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:548 */
+  /* ./parser//parser.nit:546 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction68_parser___ReduceAction68___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:549 */
+  /* ./parser//parser.nit:547 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction69_parser___ReduceAction69___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:550 */
+  /* ./parser//parser.nit:548 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction70_parser___ReduceAction70___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:551 */
+  /* ./parser//parser.nit:549 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction71_parser___ReduceAction71___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:552 */
+  /* ./parser//parser.nit:550 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction72_parser___ReduceAction72___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:553 */
+  /* ./parser//parser.nit:551 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction77_parser___ReduceAction77___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:554 */
+  /* ./parser//parser.nit:552 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction78_parser___ReduceAction78___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:555 */
+  /* ./parser//parser.nit:553 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction79_parser___ReduceAction79___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:556 */
+  /* ./parser//parser.nit:554 */
   REGB0 = TAG_Int(82);
   fra.me.REG[2] = NEW_ReduceAction80_parser___ReduceAction80___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:557 */
+  /* ./parser//parser.nit:555 */
   REGB0 = TAG_Int(83);
   fra.me.REG[2] = NEW_ReduceAction167_parser___ReduceAction167___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:558 */
+  /* ./parser//parser.nit:556 */
   REGB0 = TAG_Int(83);
   fra.me.REG[2] = NEW_ReduceAction168_parser___ReduceAction168___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:559 */
+  /* ./parser//parser.nit:557 */
   REGB0 = TAG_Int(83);
   fra.me.REG[2] = NEW_ReduceAction169_parser___ReduceAction169___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:560 */
+  /* ./parser//parser.nit:558 */
   REGB0 = TAG_Int(83);
   fra.me.REG[2] = NEW_ReduceAction170_parser___ReduceAction170___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:561 */
+  /* ./parser//parser.nit:559 */
   REGB0 = TAG_Int(84);
   fra.me.REG[2] = NEW_ReduceAction194_parser___ReduceAction194___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:562 */
+  /* ./parser//parser.nit:560 */
   REGB0 = TAG_Int(84);
   fra.me.REG[2] = NEW_ReduceAction195_parser___ReduceAction195___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:563 */
+  /* ./parser//parser.nit:561 */
   REGB0 = TAG_Int(85);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:564 */
+  /* ./parser//parser.nit:562 */
   REGB0 = TAG_Int(85);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:565 */
+  /* ./parser//parser.nit:563 */
   REGB0 = TAG_Int(85);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:566 */
+  /* ./parser//parser.nit:564 */
   REGB0 = TAG_Int(86);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:567 */
+  /* ./parser//parser.nit:565 */
   REGB0 = TAG_Int(86);
   fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:568 */
+  /* ./parser//parser.nit:566 */
   REGB0 = TAG_Int(87);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:569 */
+  /* ./parser//parser.nit:567 */
   REGB0 = TAG_Int(87);
   fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:570 */
+  /* ./parser//parser.nit:568 */
   REGB0 = TAG_Int(87);
   fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:571 */
+  /* ./parser//parser.nit:569 */
   REGB0 = TAG_Int(87);
   fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:572 */
+  /* ./parser//parser.nit:570 */
   REGB0 = TAG_Int(88);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:573 */
+  /* ./parser//parser.nit:571 */
   REGB0 = TAG_Int(88);
   fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:574 */
+  /* ./parser//parser.nit:572 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:575 */
+  /* ./parser//parser.nit:573 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:576 */
+  /* ./parser//parser.nit:574 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:577 */
+  /* ./parser//parser.nit:575 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:578 */
+  /* ./parser//parser.nit:576 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:579 */
+  /* ./parser//parser.nit:577 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:580 */
+  /* ./parser//parser.nit:578 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:581 */
+  /* ./parser//parser.nit:579 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:582 */
+  /* ./parser//parser.nit:580 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:583 */
+  /* ./parser//parser.nit:581 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:584 */
+  /* ./parser//parser.nit:582 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:585 */
+  /* ./parser//parser.nit:583 */
   REGB0 = TAG_Int(89);
   fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:586 */
+  /* ./parser//parser.nit:584 */
   REGB0 = TAG_Int(90);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:587 */
+  /* ./parser//parser.nit:585 */
   REGB0 = TAG_Int(90);
   fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:588 */
+  /* ./parser//parser.nit:586 */
   REGB0 = TAG_Int(90);
   fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:589 */
+  /* ./parser//parser.nit:587 */
   REGB0 = TAG_Int(91);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:590 */
+  /* ./parser//parser.nit:588 */
   REGB0 = TAG_Int(91);
   fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:591 */
+  /* ./parser//parser.nit:589 */
   REGB0 = TAG_Int(91);
   fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:592 */
+  /* ./parser//parser.nit:590 */
   REGB0 = TAG_Int(91);
   fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:593 */
+  /* ./parser//parser.nit:591 */
   REGB0 = TAG_Int(92);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:594 */
+  /* ./parser//parser.nit:592 */
   REGB0 = TAG_Int(92);
   fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:595 */
+  /* ./parser//parser.nit:593 */
   REGB0 = TAG_Int(92);
   fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:596 */
+  /* ./parser//parser.nit:594 */
   REGB0 = TAG_Int(93);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:597 */
+  /* ./parser//parser.nit:595 */
   REGB0 = TAG_Int(93);
   fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:598 */
+  /* ./parser//parser.nit:596 */
   REGB0 = TAG_Int(93);
   fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction326___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:599 */
+  /* ./parser//parser.nit:597 */
   REGB0 = TAG_Int(93);
   fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction327___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:600 */
+  /* ./parser//parser.nit:598 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction328___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:601 */
+  /* ./parser//parser.nit:599 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction329___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:602 */
+  /* ./parser//parser.nit:600 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:603 */
+  /* ./parser//parser.nit:601 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:604 */
+  /* ./parser//parser.nit:602 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:605 */
+  /* ./parser//parser.nit:603 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:606 */
+  /* ./parser//parser.nit:604 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:607 */
+  /* ./parser//parser.nit:605 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:608 */
+  /* ./parser//parser.nit:606 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:609 */
+  /* ./parser//parser.nit:607 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:610 */
+  /* ./parser//parser.nit:608 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:611 */
+  /* ./parser//parser.nit:609 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:612 */
+  /* ./parser//parser.nit:610 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:613 */
+  /* ./parser//parser.nit:611 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:614 */
+  /* ./parser//parser.nit:612 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:615 */
+  /* ./parser//parser.nit:613 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:616 */
+  /* ./parser//parser.nit:614 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:617 */
+  /* ./parser//parser.nit:615 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:618 */
+  /* ./parser//parser.nit:616 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:619 */
+  /* ./parser//parser.nit:617 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:620 */
+  /* ./parser//parser.nit:618 */
   REGB0 = TAG_Int(94);
   fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:621 */
+  /* ./parser//parser.nit:619 */
   REGB0 = TAG_Int(95);
   fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:622 */
+  /* ./parser//parser.nit:620 */
   REGB0 = TAG_Int(95);
   fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:623 */
+  /* ./parser//parser.nit:621 */
   REGB0 = TAG_Int(95);
   fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:624 */
+  /* ./parser//parser.nit:622 */
   REGB0 = TAG_Int(95);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:625 */
+  /* ./parser//parser.nit:623 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:626 */
+  /* ./parser//parser.nit:624 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:627 */
+  /* ./parser//parser.nit:625 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction213_parser___ReduceAction213___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:628 */
+  /* ./parser//parser.nit:626 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction214_parser___ReduceAction214___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:629 */
+  /* ./parser//parser.nit:627 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction215_parser___ReduceAction215___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:630 */
+  /* ./parser//parser.nit:628 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction216_parser___ReduceAction216___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:631 */
+  /* ./parser//parser.nit:629 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction217_parser___ReduceAction217___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:632 */
+  /* ./parser//parser.nit:630 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction218_parser___ReduceAction218___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:633 */
+  /* ./parser//parser.nit:631 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction219_parser___ReduceAction219___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:634 */
+  /* ./parser//parser.nit:632 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction220_parser___ReduceAction220___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:635 */
+  /* ./parser//parser.nit:633 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction221_parser___ReduceAction221___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:636 */
+  /* ./parser//parser.nit:634 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction222_parser___ReduceAction222___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:637 */
+  /* ./parser//parser.nit:635 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction223_parser___ReduceAction223___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:638 */
+  /* ./parser//parser.nit:636 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:639 */
+  /* ./parser//parser.nit:637 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:640 */
+  /* ./parser//parser.nit:638 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:641 */
+  /* ./parser//parser.nit:639 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:642 */
+  /* ./parser//parser.nit:640 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:643 */
+  /* ./parser//parser.nit:641 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:644 */
+  /* ./parser//parser.nit:642 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:645 */
+  /* ./parser//parser.nit:643 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:646 */
+  /* ./parser//parser.nit:644 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:647 */
+  /* ./parser//parser.nit:645 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:648 */
+  /* ./parser//parser.nit:646 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:649 */
+  /* ./parser//parser.nit:647 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:650 */
+  /* ./parser//parser.nit:648 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:651 */
+  /* ./parser//parser.nit:649 */
   REGB0 = TAG_Int(96);
   fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:652 */
+  /* ./parser//parser.nit:650 */
   REGB0 = TAG_Int(97);
   fra.me.REG[2] = NEW_ReduceAction239_parser___ReduceAction239___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:653 */
+  /* ./parser//parser.nit:651 */
   REGB0 = TAG_Int(97);
   fra.me.REG[2] = NEW_ReduceAction240_parser___ReduceAction240___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:654 */
+  /* ./parser//parser.nit:652 */
   REGB0 = TAG_Int(98);
   fra.me.REG[2] = NEW_ReduceAction241_parser___ReduceAction241___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:655 */
+  /* ./parser//parser.nit:653 */
   REGB0 = TAG_Int(98);
   fra.me.REG[2] = NEW_ReduceAction242_parser___ReduceAction242___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:656 */
+  /* ./parser//parser.nit:654 */
   REGB0 = TAG_Int(98);
   fra.me.REG[2] = NEW_ReduceAction243_parser___ReduceAction243___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:657 */
+  /* ./parser//parser.nit:655 */
   REGB0 = TAG_Int(98);
   fra.me.REG[2] = NEW_ReduceAction244_parser___ReduceAction244___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:658 */
+  /* ./parser//parser.nit:656 */
   REGB0 = TAG_Int(98);
   fra.me.REG[2] = NEW_ReduceAction245_parser___ReduceAction245___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:659 */
+  /* ./parser//parser.nit:657 */
   REGB0 = TAG_Int(98);
   fra.me.REG[2] = NEW_ReduceAction246_parser___ReduceAction246___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:660 */
+  /* ./parser//parser.nit:658 */
   REGB0 = TAG_Int(99);
   fra.me.REG[2] = NEW_ReduceAction253_parser___ReduceAction253___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:661 */
+  /* ./parser//parser.nit:659 */
   REGB0 = TAG_Int(100);
   fra.me.REG[2] = NEW_ReduceAction254_parser___ReduceAction254___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:662 */
+  /* ./parser//parser.nit:660 */
   REGB0 = TAG_Int(100);
   fra.me.REG[2] = NEW_ReduceAction255_parser___ReduceAction255___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:663 */
+  /* ./parser//parser.nit:661 */
   REGB0 = TAG_Int(100);
   fra.me.REG[2] = NEW_ReduceAction256_parser___ReduceAction256___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:664 */
+  /* ./parser//parser.nit:662 */
   REGB0 = TAG_Int(100);
   fra.me.REG[2] = NEW_ReduceAction257_parser___ReduceAction257___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:665 */
+  /* ./parser//parser.nit:663 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction258_parser___ReduceAction258___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:666 */
+  /* ./parser//parser.nit:664 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction259_parser___ReduceAction259___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:667 */
+  /* ./parser//parser.nit:665 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction260_parser___ReduceAction260___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:668 */
+  /* ./parser//parser.nit:666 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction261_parser___ReduceAction261___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:669 */
+  /* ./parser//parser.nit:667 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction262_parser___ReduceAction262___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:670 */
+  /* ./parser//parser.nit:668 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction263_parser___ReduceAction263___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:671 */
+  /* ./parser//parser.nit:669 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction264_parser___ReduceAction264___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:672 */
+  /* ./parser//parser.nit:670 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction265_parser___ReduceAction265___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:673 */
+  /* ./parser//parser.nit:671 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction266_parser___ReduceAction266___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:674 */
+  /* ./parser//parser.nit:672 */
   REGB0 = TAG_Int(101);
   fra.me.REG[2] = NEW_ReduceAction267_parser___ReduceAction267___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:675 */
+  /* ./parser//parser.nit:673 */
   REGB0 = TAG_Int(102);
   fra.me.REG[2] = NEW_ReduceAction270_parser___ReduceAction270___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:676 */
+  /* ./parser//parser.nit:674 */
   REGB0 = TAG_Int(102);
   fra.me.REG[2] = NEW_ReduceAction271_parser___ReduceAction271___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:677 */
+  /* ./parser//parser.nit:675 */
   REGB0 = TAG_Int(103);
   fra.me.REG[2] = NEW_ReduceAction272_parser___ReduceAction272___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:678 */
+  /* ./parser//parser.nit:676 */
   REGB0 = TAG_Int(104);
   fra.me.REG[2] = NEW_ReduceAction279_parser___ReduceAction279___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:679 */
+  /* ./parser//parser.nit:677 */
   REGB0 = TAG_Int(104);
   fra.me.REG[2] = NEW_ReduceAction280_parser___ReduceAction280___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:680 */
+  /* ./parser//parser.nit:678 */
   REGB0 = TAG_Int(105);
   fra.me.REG[2] = NEW_ReduceAction281_parser___ReduceAction281___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:681 */
+  /* ./parser//parser.nit:679 */
   REGB0 = TAG_Int(105);
   fra.me.REG[2] = NEW_ReduceAction282_parser___ReduceAction282___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:682 */
+  /* ./parser//parser.nit:680 */
   REGB0 = TAG_Int(106);
   fra.me.REG[2] = NEW_ReduceAction283_parser___ReduceAction283___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:683 */
+  /* ./parser//parser.nit:681 */
   REGB0 = TAG_Int(106);
   fra.me.REG[2] = NEW_ReduceAction284_parser___ReduceAction284___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:684 */
+  /* ./parser//parser.nit:682 */
   REGB0 = TAG_Int(107);
   fra.me.REG[2] = NEW_ReduceAction285_parser___ReduceAction285___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:685 */
+  /* ./parser//parser.nit:683 */
   REGB0 = TAG_Int(107);
   fra.me.REG[2] = NEW_ReduceAction286_parser___ReduceAction286___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:686 */
+  /* ./parser//parser.nit:684 */
   REGB0 = TAG_Int(108);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:687 */
+  /* ./parser//parser.nit:685 */
   REGB0 = TAG_Int(108);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:688 */
+  /* ./parser//parser.nit:686 */
   REGB0 = TAG_Int(108);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:689 */
+  /* ./parser//parser.nit:687 */
   REGB0 = TAG_Int(108);
   fra.me.REG[2] = NEW_ReduceAction293_parser___ReduceAction293___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:690 */
+  /* ./parser//parser.nit:688 */
   REGB0 = TAG_Int(109);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:691 */
+  /* ./parser//parser.nit:689 */
   REGB0 = TAG_Int(109);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:692 */
+  /* ./parser//parser.nit:690 */
   REGB0 = TAG_Int(109);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:693 */
+  /* ./parser//parser.nit:691 */
   REGB0 = TAG_Int(110);
   fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:694 */
+  /* ./parser//parser.nit:692 */
   REGB0 = TAG_Int(110);
   fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:695 */
+  /* ./parser//parser.nit:693 */
   REGB0 = TAG_Int(110);
   fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:696 */
+  /* ./parser//parser.nit:694 */
   REGB0 = TAG_Int(111);
   fra.me.REG[2] = NEW_ReduceAction202_parser___ReduceAction202___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:697 */
+  /* ./parser//parser.nit:695 */
   REGB0 = TAG_Int(111);
   fra.me.REG[2] = NEW_ReduceAction203_parser___ReduceAction203___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:698 */
+  /* ./parser//parser.nit:696 */
   REGB0 = TAG_Int(111);
   fra.me.REG[2] = NEW_ReduceAction204_parser___ReduceAction204___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:699 */
+  /* ./parser//parser.nit:697 */
   REGB0 = TAG_Int(112);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:700 */
+  /* ./parser//parser.nit:698 */
   REGB0 = TAG_Int(112);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:701 */
+  /* ./parser//parser.nit:699 */
   REGB0 = TAG_Int(112);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:702 */
+  /* ./parser//parser.nit:700 */
   REGB0 = TAG_Int(113);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:703 */
+  /* ./parser//parser.nit:701 */
   REGB0 = TAG_Int(113);
   fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:704 */
+  /* ./parser//parser.nit:702 */
   REGB0 = TAG_Int(114);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:705 */
+  /* ./parser//parser.nit:703 */
   REGB0 = TAG_Int(114);
   fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:706 */
+  /* ./parser//parser.nit:704 */
   REGB0 = TAG_Int(114);
   fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:707 */
+  /* ./parser//parser.nit:705 */
   REGB0 = TAG_Int(114);
   fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:708 */
+  /* ./parser//parser.nit:706 */
   REGB0 = TAG_Int(115);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:709 */
+  /* ./parser//parser.nit:707 */
   REGB0 = TAG_Int(115);
   fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:710 */
+  /* ./parser//parser.nit:708 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:711 */
+  /* ./parser//parser.nit:709 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:712 */
+  /* ./parser//parser.nit:710 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:713 */
+  /* ./parser//parser.nit:711 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:714 */
+  /* ./parser//parser.nit:712 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:715 */
+  /* ./parser//parser.nit:713 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:716 */
+  /* ./parser//parser.nit:714 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:717 */
+  /* ./parser//parser.nit:715 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:718 */
+  /* ./parser//parser.nit:716 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:719 */
+  /* ./parser//parser.nit:717 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:720 */
+  /* ./parser//parser.nit:718 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:721 */
+  /* ./parser//parser.nit:719 */
   REGB0 = TAG_Int(116);
   fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:722 */
+  /* ./parser//parser.nit:720 */
   REGB0 = TAG_Int(117);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:723 */
+  /* ./parser//parser.nit:721 */
   REGB0 = TAG_Int(117);
   fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:724 */
+  /* ./parser//parser.nit:722 */
   REGB0 = TAG_Int(117);
   fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:725 */
+  /* ./parser//parser.nit:723 */
   REGB0 = TAG_Int(118);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:726 */
+  /* ./parser//parser.nit:724 */
   REGB0 = TAG_Int(118);
   fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:727 */
+  /* ./parser//parser.nit:725 */
   REGB0 = TAG_Int(118);
   fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:728 */
+  /* ./parser//parser.nit:726 */
   REGB0 = TAG_Int(118);
   fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:729 */
+  /* ./parser//parser.nit:727 */
   REGB0 = TAG_Int(119);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:730 */
+  /* ./parser//parser.nit:728 */
   REGB0 = TAG_Int(119);
   fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:731 */
+  /* ./parser//parser.nit:729 */
   REGB0 = TAG_Int(119);
   fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:732 */
+  /* ./parser//parser.nit:730 */
   REGB0 = TAG_Int(120);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:733 */
+  /* ./parser//parser.nit:731 */
   REGB0 = TAG_Int(120);
   fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:734 */
+  /* ./parser//parser.nit:732 */
   REGB0 = TAG_Int(120);
   fra.me.REG[2] = NEW_ReduceAction326_parser___ReduceAction326___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:735 */
+  /* ./parser//parser.nit:733 */
   REGB0 = TAG_Int(120);
   fra.me.REG[2] = NEW_ReduceAction327_parser___ReduceAction327___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:736 */
+  /* ./parser//parser.nit:734 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction328_parser___ReduceAction328___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:737 */
+  /* ./parser//parser.nit:735 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction329_parser___ReduceAction329___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:738 */
+  /* ./parser//parser.nit:736 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction230_parser___ReduceAction230___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:739 */
+  /* ./parser//parser.nit:737 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction231_parser___ReduceAction231___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:740 */
+  /* ./parser//parser.nit:738 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:741 */
+  /* ./parser//parser.nit:739 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:742 */
+  /* ./parser//parser.nit:740 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction236_parser___ReduceAction236___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:743 */
+  /* ./parser//parser.nit:741 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction237_parser___ReduceAction237___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:744 */
+  /* ./parser//parser.nit:742 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction336_parser___ReduceAction336___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:745 */
+  /* ./parser//parser.nit:743 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:746 */
+  /* ./parser//parser.nit:744 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:747 */
+  /* ./parser//parser.nit:745 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:748 */
+  /* ./parser//parser.nit:746 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:749 */
+  /* ./parser//parser.nit:747 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:750 */
+  /* ./parser//parser.nit:748 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:751 */
+  /* ./parser//parser.nit:749 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:752 */
+  /* ./parser//parser.nit:750 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:753 */
+  /* ./parser//parser.nit:751 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:754 */
+  /* ./parser//parser.nit:752 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:755 */
+  /* ./parser//parser.nit:753 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:756 */
+  /* ./parser//parser.nit:754 */
   REGB0 = TAG_Int(121);
   fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:757 */
+  /* ./parser//parser.nit:755 */
   REGB0 = TAG_Int(122);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:758 */
+  /* ./parser//parser.nit:756 */
   REGB0 = TAG_Int(122);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:759 */
+  /* ./parser//parser.nit:757 */
   REGB0 = TAG_Int(122);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:760 */
+  /* ./parser//parser.nit:758 */
   REGB0 = TAG_Int(123);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:761 */
+  /* ./parser//parser.nit:759 */
   REGB0 = TAG_Int(123);
   fra.me.REG[2] = NEW_ReduceAction295_parser___ReduceAction295___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:762 */
+  /* ./parser//parser.nit:760 */
   REGB0 = TAG_Int(124);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:763 */
+  /* ./parser//parser.nit:761 */
   REGB0 = TAG_Int(124);
   fra.me.REG[2] = NEW_ReduceAction297_parser___ReduceAction297___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:764 */
+  /* ./parser//parser.nit:762 */
   REGB0 = TAG_Int(124);
   fra.me.REG[2] = NEW_ReduceAction298_parser___ReduceAction298___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:765 */
+  /* ./parser//parser.nit:763 */
   REGB0 = TAG_Int(124);
   fra.me.REG[2] = NEW_ReduceAction299_parser___ReduceAction299___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:766 */
+  /* ./parser//parser.nit:764 */
   REGB0 = TAG_Int(125);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:767 */
+  /* ./parser//parser.nit:765 */
   REGB0 = TAG_Int(125);
   fra.me.REG[2] = NEW_ReduceAction301_parser___ReduceAction301___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:768 */
+  /* ./parser//parser.nit:766 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:769 */
+  /* ./parser//parser.nit:767 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction303_parser___ReduceAction303___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:770 */
+  /* ./parser//parser.nit:768 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction304_parser___ReduceAction304___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:771 */
+  /* ./parser//parser.nit:769 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction305_parser___ReduceAction305___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:772 */
+  /* ./parser//parser.nit:770 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction306_parser___ReduceAction306___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:773 */
+  /* ./parser//parser.nit:771 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction307_parser___ReduceAction307___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:774 */
+  /* ./parser//parser.nit:772 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction308_parser___ReduceAction308___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:775 */
+  /* ./parser//parser.nit:773 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction309_parser___ReduceAction309___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:776 */
+  /* ./parser//parser.nit:774 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction310_parser___ReduceAction310___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:777 */
+  /* ./parser//parser.nit:775 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction311_parser___ReduceAction311___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:778 */
+  /* ./parser//parser.nit:776 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction312_parser___ReduceAction312___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:779 */
+  /* ./parser//parser.nit:777 */
   REGB0 = TAG_Int(126);
   fra.me.REG[2] = NEW_ReduceAction313_parser___ReduceAction313___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:780 */
+  /* ./parser//parser.nit:778 */
   REGB0 = TAG_Int(127);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:781 */
+  /* ./parser//parser.nit:779 */
   REGB0 = TAG_Int(127);
   fra.me.REG[2] = NEW_ReduceAction315_parser___ReduceAction315___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:782 */
+  /* ./parser//parser.nit:780 */
   REGB0 = TAG_Int(127);
   fra.me.REG[2] = NEW_ReduceAction316_parser___ReduceAction316___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:783 */
+  /* ./parser//parser.nit:781 */
   REGB0 = TAG_Int(128);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:784 */
+  /* ./parser//parser.nit:782 */
   REGB0 = TAG_Int(128);
   fra.me.REG[2] = NEW_ReduceAction318_parser___ReduceAction318___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:785 */
+  /* ./parser//parser.nit:783 */
   REGB0 = TAG_Int(128);
   fra.me.REG[2] = NEW_ReduceAction319_parser___ReduceAction319___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:786 */
+  /* ./parser//parser.nit:784 */
   REGB0 = TAG_Int(128);
   fra.me.REG[2] = NEW_ReduceAction320_parser___ReduceAction320___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:787 */
+  /* ./parser//parser.nit:785 */
   REGB0 = TAG_Int(129);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:788 */
+  /* ./parser//parser.nit:786 */
   REGB0 = TAG_Int(129);
   fra.me.REG[2] = NEW_ReduceAction322_parser___ReduceAction322___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:789 */
+  /* ./parser//parser.nit:787 */
   REGB0 = TAG_Int(129);
   fra.me.REG[2] = NEW_ReduceAction323_parser___ReduceAction323___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:790 */
+  /* ./parser//parser.nit:788 */
   REGB0 = TAG_Int(130);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:791 */
+  /* ./parser//parser.nit:789 */
   REGB0 = TAG_Int(130);
   fra.me.REG[2] = NEW_ReduceAction325_parser___ReduceAction325___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:792 */
+  /* ./parser//parser.nit:790 */
   REGB0 = TAG_Int(130);
   fra.me.REG[2] = NEW_ReduceAction637_parser___ReduceAction637___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:793 */
+  /* ./parser//parser.nit:791 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction638_parser___ReduceAction638___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:794 */
+  /* ./parser//parser.nit:792 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction639_parser___ReduceAction639___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:795 */
+  /* ./parser//parser.nit:793 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction234_parser___ReduceAction234___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:796 */
+  /* ./parser//parser.nit:794 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction235_parser___ReduceAction235___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:797 */
+  /* ./parser//parser.nit:795 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction642_parser___ReduceAction642___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:798 */
+  /* ./parser//parser.nit:796 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction337_parser___ReduceAction337___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:799 */
+  /* ./parser//parser.nit:797 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction341_parser___ReduceAction341___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:800 */
+  /* ./parser//parser.nit:798 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction342_parser___ReduceAction342___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:801 */
+  /* ./parser//parser.nit:799 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction343_parser___ReduceAction343___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:802 */
+  /* ./parser//parser.nit:800 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction344_parser___ReduceAction344___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:803 */
+  /* ./parser//parser.nit:801 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction345_parser___ReduceAction345___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:804 */
+  /* ./parser//parser.nit:802 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction346_parser___ReduceAction346___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:805 */
+  /* ./parser//parser.nit:803 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction347_parser___ReduceAction347___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:806 */
+  /* ./parser//parser.nit:804 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction348_parser___ReduceAction348___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:807 */
+  /* ./parser//parser.nit:805 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:808 */
+  /* ./parser//parser.nit:806 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction351_parser___ReduceAction351___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:809 */
+  /* ./parser//parser.nit:807 */
   REGB0 = TAG_Int(131);
   fra.me.REG[2] = NEW_ReduceAction352_parser___ReduceAction352___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:810 */
+  /* ./parser//parser.nit:808 */
   REGB0 = TAG_Int(132);
   fra.me.REG[2] = NEW_ReduceAction655_parser___ReduceAction655___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:811 */
+  /* ./parser//parser.nit:809 */
   REGB0 = TAG_Int(132);
   fra.me.REG[2] = NEW_ReduceAction656_parser___ReduceAction656___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:812 */
+  /* ./parser//parser.nit:810 */
   REGB0 = TAG_Int(133);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:813 */
+  /* ./parser//parser.nit:811 */
   REGB0 = TAG_Int(133);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:814 */
+  /* ./parser//parser.nit:812 */
   REGB0 = TAG_Int(133);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:815 */
+  /* ./parser//parser.nit:813 */
   REGB0 = TAG_Int(134);
   fra.me.REG[2] = NEW_ReduceAction205_parser___ReduceAction205___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:816 */
+  /* ./parser//parser.nit:814 */
   REGB0 = TAG_Int(134);
   fra.me.REG[2] = NEW_ReduceAction232_parser___ReduceAction232___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:817 */
+  /* ./parser//parser.nit:815 */
   REGB0 = TAG_Int(134);
   fra.me.REG[2] = NEW_ReduceAction233_parser___ReduceAction233___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:818 */
+  /* ./parser//parser.nit:816 */
   REGB0 = TAG_Int(135);
   fra.me.REG[2] = NEW_ReduceAction663_parser___ReduceAction663___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:819 */
+  /* ./parser//parser.nit:817 */
   REGB0 = TAG_Int(135);
   fra.me.REG[2] = NEW_ReduceAction664_parser___ReduceAction664___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:820 */
+  /* ./parser//parser.nit:818 */
   REGB0 = TAG_Int(136);
   fra.me.REG[2] = NEW_ReduceAction665_parser___ReduceAction665___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:821 */
+  /* ./parser//parser.nit:819 */
   REGB0 = TAG_Int(136);
   fra.me.REG[2] = NEW_ReduceAction666_parser___ReduceAction666___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:822 */
+  /* ./parser//parser.nit:820 */
   REGB0 = TAG_Int(137);
   fra.me.REG[2] = NEW_ReduceAction667_parser___ReduceAction667___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:823 */
+  /* ./parser//parser.nit:821 */
   REGB0 = TAG_Int(137);
   fra.me.REG[2] = NEW_ReduceAction668_parser___ReduceAction668___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:824 */
+  /* ./parser//parser.nit:822 */
   REGB0 = TAG_Int(138);
   fra.me.REG[2] = NEW_ReduceAction669_parser___ReduceAction669___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:825 */
+  /* ./parser//parser.nit:823 */
   REGB0 = TAG_Int(138);
   fra.me.REG[2] = NEW_ReduceAction670_parser___ReduceAction670___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:826 */
+  /* ./parser//parser.nit:824 */
   REGB0 = TAG_Int(139);
   fra.me.REG[2] = NEW_ReduceAction667_parser___ReduceAction667___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:827 */
+  /* ./parser//parser.nit:825 */
   REGB0 = TAG_Int(139);
   fra.me.REG[2] = NEW_ReduceAction668_parser___ReduceAction668___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:828 */
+  /* ./parser//parser.nit:826 */
   REGB0 = TAG_Int(140);
   fra.me.REG[2] = NEW_ReduceAction673_parser___ReduceAction673___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:829 */
+  /* ./parser//parser.nit:827 */
   REGB0 = TAG_Int(140);
   fra.me.REG[2] = NEW_ReduceAction674_parser___ReduceAction674___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:830 */
+  /* ./parser//parser.nit:828 */
   REGB0 = TAG_Int(141);
   fra.me.REG[2] = NEW_ReduceAction675_parser___ReduceAction675___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:831 */
+  /* ./parser//parser.nit:829 */
   REGB0 = TAG_Int(141);
   fra.me.REG[2] = NEW_ReduceAction676_parser___ReduceAction676___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:832 */
+  /* ./parser//parser.nit:830 */
   REGB0 = TAG_Int(142);
   fra.me.REG[2] = NEW_ReduceAction677_parser___ReduceAction677___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:833 */
+  /* ./parser//parser.nit:831 */
   REGB0 = TAG_Int(142);
   fra.me.REG[2] = NEW_ReduceAction678_parser___ReduceAction678___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:834 */
+  /* ./parser//parser.nit:832 */
   REGB0 = TAG_Int(143);
   fra.me.REG[2] = NEW_ReduceAction198_parser___ReduceAction198___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:835 */
+  /* ./parser//parser.nit:833 */
   REGB0 = TAG_Int(143);
   fra.me.REG[2] = NEW_ReduceAction680_parser___ReduceAction680___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:836 */
+  /* ./parser//parser.nit:834 */
   REGB0 = TAG_Int(144);
   fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction366___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:837 */
+  /* ./parser//parser.nit:835 */
   REGB0 = TAG_Int(144);
   fra.me.REG[2] = NEW_ReduceAction682_parser___ReduceAction682___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:838 */
+  /* ./parser//parser.nit:836 */
   REGB0 = TAG_Int(145);
   fra.me.REG[2] = NEW_ReduceAction373_parser___ReduceAction373___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:839 */
+  /* ./parser//parser.nit:837 */
   REGB0 = TAG_Int(145);
   fra.me.REG[2] = NEW_ReduceAction684_parser___ReduceAction684___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:840 */
+  /* ./parser//parser.nit:838 */
   REGB0 = TAG_Int(146);
   fra.me.REG[2] = NEW_ReduceAction366_parser___ReduceAction366___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:841 */
+  /* ./parser//parser.nit:839 */
   REGB0 = TAG_Int(146);
   fra.me.REG[2] = NEW_ReduceAction682_parser___ReduceAction682___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:842 */
+  /* ./parser//parser.nit:840 */
   REGB0 = TAG_Int(147);
   fra.me.REG[2] = NEW_ReduceAction374_parser___ReduceAction374___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:843 */
+  /* ./parser//parser.nit:841 */
   REGB0 = TAG_Int(147);
   fra.me.REG[2] = NEW_ReduceAction688_parser___ReduceAction688___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:844 */
+  /* ./parser//parser.nit:842 */
   REGB0 = TAG_Int(148);
   fra.me.REG[2] = NEW_ReduceAction689_parser___ReduceAction689___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:845 */
+  /* ./parser//parser.nit:843 */
   REGB0 = TAG_Int(148);
   fra.me.REG[2] = NEW_ReduceAction690_parser___ReduceAction690___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:846 */
+  /* ./parser//parser.nit:844 */
   REGB0 = TAG_Int(149);
   fra.me.REG[2] = NEW_ReduceAction691_parser___ReduceAction691___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:847 */
+  /* ./parser//parser.nit:845 */
   REGB0 = TAG_Int(149);
   fra.me.REG[2] = NEW_ReduceAction692_parser___ReduceAction692___init(REGB0);
-  /* ./parser//parser.nit:154 */
+  /* ./parser//parser.nit:152 */
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[1] = NEW_Array_array___Array___with_items(fra.me.REG[1]);
   ATTR_parser___Parser____reduce_table(fra.me.REG[0]) = fra.me.REG[1];
@@ -4289,7 +4277,7 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 878;
+  fra.me.line = 876;
   fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -4304,7 +4292,7 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:880 */
+  /* ./parser//parser.nit:878 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4318,25 +4306,25 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:881 */
+    /* ./parser//parser.nit:879 */
     goto label1;
   } else {
-    /* ./parser//parser.nit:882 */
+    /* ./parser//parser.nit:880 */
     REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_Token, ID_Token)) /*cast Token*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./parser//parser.nit:883 */
+      /* ./parser//parser.nit:881 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser, 883);
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 881);
       }
       fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./parser//parser.nit:884 */
+      /* ./parser//parser.nit:882 */
       ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
-      /* ./parser//parser.nit:887 */
+      /* ./parser//parser.nit:885 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 887);
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 885);
       }
       fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
       /* ./../lib/standard//collection//array.nit:234 */
@@ -4370,7 +4358,7 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           }
           /* ./../lib/standard//collection//array.nit:654 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-          /* ./parser//parser.nit:888 */
+          /* ./parser//parser.nit:886 */
           ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
           /* ./../lib/standard//collection//array.nit:239 */
           REGB1 = TAG_Int(1);
@@ -4384,19 +4372,19 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
         }
       }
       label2: while(0);
-      /* ./parser//parser.nit:890 */
+      /* ./parser//parser.nit:888 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 890);
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 888);
       }
       fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
       CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./parser//parser.nit:893 */
+      /* ./parser//parser.nit:891 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 893);
+        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 891);
       }
       fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
       /* ./../lib/standard//collection//array.nit:234 */
@@ -4430,21 +4418,21 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           }
           /* ./../lib/standard//collection//array.nit:654 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-          /* ./parser//parser.nit:896 */
+          /* ./parser//parser.nit:894 */
           fra.me.REG[6] = fra.me.REG[2];
-          /* ./parser//parser.nit:897 */
+          /* ./parser//parser.nit:895 */
           fra.me.REG[7] = ATTR_parser___Prod____last_location(fra.me.REG[5]);
-          /* ./parser//parser.nit:898 */
+          /* ./parser//parser.nit:896 */
           fra.me.REG[8] = CALL_location___Location___file(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 898);
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 896);
           }
           REGB1 = CALL_location___Location___line_end(fra.me.REG[7])(fra.me.REG[7]);
           REGB2 = CALL_location___Location___line_start(fra.me.REG[6])(fra.me.REG[6]);
           REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            nit_abort("Reciever is null", NULL, LOCATE_parser, 898);
+            nit_abort("Reciever is null", NULL, LOCATE_parser, 896);
           }
           REGB3 = CALL_location___Location___column_end(fra.me.REG[7])(fra.me.REG[7]);
           REGB4 = CALL_location___Location___column_start(fra.me.REG[6])(fra.me.REG[6]);
@@ -4462,42 +4450,42 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
         }
       }
       label3: while(0);
-      /* ./parser//parser.nit:900 */
+      /* ./parser//parser.nit:898 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 900);
+        nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 898);
       }
       fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
       CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
     } else {
-      /* ./parser//parser.nit:902 */
+      /* ./parser//parser.nit:900 */
       REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_Prod, ID_Prod)) /*cast Prod*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_parser, 902);
+        nit_abort("Assert failed", NULL, LOCATE_parser, 900);
       }
-      /* ./parser//parser.nit:903 */
+      /* ./parser//parser.nit:901 */
       REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 903);
+        nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 901);
       }
       fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
       CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-      /* ./parser//parser.nit:905 */
+      /* ./parser//parser.nit:903 */
       fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
-      /* ./parser//parser.nit:906 */
+      /* ./parser//parser.nit:904 */
       ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = NIT_NULL;
-      /* ./parser//parser.nit:907 */
+      /* ./parser//parser.nit:905 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_parser, 907);
+        nit_abort("Reciever is null", NULL, LOCATE_parser, 905);
       }
       CALL_parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-      /* ./parser//parser.nit:908 */
+      /* ./parser//parser.nit:906 */
       fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]);
-      /* ./parser//parser.nit:909 */
+      /* ./parser//parser.nit:907 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4513,11 +4501,11 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB0)) {
         ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[2];
       }
-      /* ./parser//parser.nit:911 */
+      /* ./parser//parser.nit:909 */
       ATTR_parser___Prod____last_location(fra.me.REG[1]) = fra.me.REG[3];
-      /* ./parser//parser.nit:912 */
+      /* ./parser//parser.nit:910 */
       fra.me.REG[2] = ATTR_parser___Prod____first_location(fra.me.REG[1]);
-      /* ./parser//parser.nit:913 */
+      /* ./parser//parser.nit:911 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4532,7 +4520,7 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./parser//parser.nit:915 */
+        /* ./parser//parser.nit:913 */
         REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
@@ -4548,45 +4536,45 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_parser, 915);
+          nit_abort("Assert failed", NULL, LOCATE_parser, 913);
         }
-        /* ./parser//parser.nit:917 */
+        /* ./parser//parser.nit:915 */
         REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 917);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
         }
         fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
         REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 917);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
         }
         REGB0 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
         REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 917);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
         }
         REGB4 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
         REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 917);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
         }
         REGB3 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
         REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 917);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
         }
         REGB2 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[4] = NEW_Location_location___Location___init(fra.me.REG[4], REGB0, REGB4, REGB3, REGB2);
         REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_parser, 917);
+          nit_abort("Reciever is null", NULL, LOCATE_parser, 915);
         }
         CALL_parser_nodes___Prod___location__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-        /* ./parser//parser.nit:919 */
+        /* ./parser//parser.nit:917 */
         REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 919);
+          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 917);
         }
         fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
         /* ./../lib/standard//collection//array.nit:234 */
@@ -4620,30 +4608,30 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
             }
             /* ./../lib/standard//collection//array.nit:654 */
             fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
-            /* ./parser//parser.nit:922 */
+            /* ./parser//parser.nit:920 */
             REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 922);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
             }
             fra.me.REG[6] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
             REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 922);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
             }
             REGB3 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
             REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 922);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
             }
             REGB4 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
             REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 922);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
             }
             REGB0 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
             REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 922);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 920);
             }
             REGB1 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
             fra.me.REG[6] = NEW_Location_location___Location___init(fra.me.REG[6], REGB3, REGB4, REGB0, REGB1);
@@ -4660,19 +4648,19 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           }
         }
         label4: while(0);
-        /* ./parser//parser.nit:924 */
+        /* ./parser//parser.nit:922 */
         REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 924);
+          nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 922);
         }
         fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
         CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[2])(fra.me.REG[2]);
-        /* ./parser//parser.nit:926 */
+        /* ./parser//parser.nit:924 */
         REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 926);
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 924);
         }
         fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
         /* ./../lib/standard//collection//array.nit:234 */
@@ -4706,30 +4694,30 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
             }
             /* ./../lib/standard//collection//array.nit:654 */
             fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
-            /* ./parser//parser.nit:929 */
+            /* ./parser//parser.nit:927 */
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 929);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
             }
             fra.me.REG[6] = CALL_location___Location___file(fra.me.REG[3])(fra.me.REG[3]);
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 929);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
             }
             REGB1 = CALL_location___Location___line_end(fra.me.REG[3])(fra.me.REG[3]);
             REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 929);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
             }
             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, 929);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
             }
             REGB4 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
             REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_parser, 929);
+              nit_abort("Reciever is null", NULL, LOCATE_parser, 927);
             }
             REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
             fra.me.REG[6] = NEW_Location_location___Location___init(fra.me.REG[6], REGB1, REGB0, REGB4, REGB3);
@@ -4746,16 +4734,16 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           }
         }
         label5: while(0);
-        /* ./parser//parser.nit:931 */
+        /* ./parser//parser.nit:929 */
         REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 931);
+          nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 929);
         }
         fra.me.REG[8] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
         CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[8])(fra.me.REG[8]);
       } else {
-        /* ./parser//parser.nit:935 */
+        /* ./parser//parser.nit:933 */
         REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
@@ -4769,20 +4757,20 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           }
         }
         if (UNTAG_Bool(REGB2)) {
-          /* ./parser//parser.nit:937 */
+          /* ./parser//parser.nit:935 */
           REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 937);
+            nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 935);
           }
           fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
           CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
         } else {
-          /* ./parser//parser.nit:940 */
+          /* ./parser//parser.nit:938 */
           REGB2 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 940);
+            nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 938);
           }
           fra.me.REG[0] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
           CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -4801,13 +4789,13 @@ void parser___ComputeProdLocationVisitor___init(val_t p0, int* init_table){
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 946;
+  fra.me.line = 944;
   fra.me.meth = LOCATE_parser___ComputeProdLocationVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./parser//parser.nit:946 */
+  /* ./parser//parser.nit:944 */
   CALL_parser_prod___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -4818,12 +4806,12 @@ void parser___ReduceAction___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 951;
+  fra.me.line = 949;
   fra.me.meth = LOCATE_parser___ReduceAction___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./parser//parser.nit:951 */
-  nit_abort("Deferred method called", NULL, LOCATE_parser, 951);
+  /* ./parser//parser.nit:949 */
+  nit_abort("Deferred method called", NULL, LOCATE_parser, 949);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -4833,7 +4821,7 @@ val_t parser___ReduceAction___concat(val_t p0, val_t p1, val_t p2){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 952;
+  fra.me.line = 950;
   fra.me.meth = LOCATE_parser___ReduceAction___concat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4843,15 +4831,15 @@ val_t parser___ReduceAction___concat(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./parser//parser.nit:954 */
+  /* ./parser//parser.nit:952 */
   REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[0] = fra.me.REG[2];
     goto label1;
   }
-  /* ./parser//parser.nit:955 */
+  /* ./parser//parser.nit:953 */
   CALL_abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./parser//parser.nit:956 */
+  /* ./parser//parser.nit:954 */
   fra.me.REG[0] = fra.me.REG[1];
   goto label1;
   label1: while(0);
@@ -4879,7 +4867,7 @@ void parser___ReduceAction0___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 962;
+  fra.me.line = 960;
   fra.me.meth = LOCATE_parser___ReduceAction0___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -4890,21 +4878,21 @@ void parser___ReduceAction0___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:964 */
+  /* ./parser//parser.nit:962 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:965 */
+  /* ./parser//parser.nit:963 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:966 */
+  /* ./parser//parser.nit:964 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:967 */
+  /* ./parser//parser.nit:965 */
   fra.me.REG[4] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
-  /* ./parser//parser.nit:972 */
+  /* ./parser//parser.nit:970 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:973 */
+  /* ./parser//parser.nit:971 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction0____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 973);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 971);
   }
   REGB0 = ATTR_parser___ReduceAction0____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -4920,7 +4908,7 @@ void parser___ReduceAction0___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 976;
+  fra.me.line = 974;
   fra.me.meth = LOCATE_parser___ReduceAction0___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4928,7 +4916,7 @@ void parser___ReduceAction0___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:976 */
+  /* ./parser//parser.nit:974 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction0____goto(fra.me.REG[1]) = REGB0;
@@ -4942,7 +4930,7 @@ void parser___ReduceAction1___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 980;
+  fra.me.line = 978;
   fra.me.meth = LOCATE_parser___ReduceAction1___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -4954,29 +4942,29 @@ void parser___ReduceAction1___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:982 */
+  /* ./parser//parser.nit:980 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:983 */
+  /* ./parser//parser.nit:981 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:984 */
+  /* ./parser//parser.nit:982 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:985 */
+  /* ./parser//parser.nit:983 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:987 */
+  /* ./parser//parser.nit:985 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 985);
   }
-  /* ./parser//parser.nit:988 */
+  /* ./parser//parser.nit:986 */
   fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:993 */
+  /* ./parser//parser.nit:991 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:994 */
+  /* ./parser//parser.nit:992 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction1____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 994);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 992);
   }
   REGB0 = ATTR_parser___ReduceAction1____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -4992,7 +4980,7 @@ void parser___ReduceAction1___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 997;
+  fra.me.line = 995;
   fra.me.meth = LOCATE_parser___ReduceAction1___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5000,7 +4988,7 @@ void parser___ReduceAction1___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:997 */
+  /* ./parser//parser.nit:995 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction1____goto(fra.me.REG[1]) = REGB0;
@@ -5014,7 +5002,7 @@ void parser___ReduceAction2___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1001;
+  fra.me.line = 999;
   fra.me.meth = LOCATE_parser___ReduceAction2___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -5026,32 +5014,32 @@ void parser___ReduceAction2___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1003 */
+  /* ./parser//parser.nit:1001 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1004 */
+  /* ./parser//parser.nit:1002 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1005 */
+  /* ./parser//parser.nit:1003 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1006 */
+  /* ./parser//parser.nit:1004 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1008 */
+  /* ./parser//parser.nit:1006 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1008);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1006);
   }
-  /* ./parser//parser.nit:1009 */
+  /* ./parser//parser.nit:1007 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:1010 */
+  /* ./parser//parser.nit:1008 */
   fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:1015 */
+  /* ./parser//parser.nit:1013 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:1016 */
+  /* ./parser//parser.nit:1014 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction2____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1016);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1014);
   }
   REGB0 = ATTR_parser___ReduceAction2____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5067,7 +5055,7 @@ void parser___ReduceAction2___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1019;
+  fra.me.line = 1017;
   fra.me.meth = LOCATE_parser___ReduceAction2___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5075,7 +5063,7 @@ void parser___ReduceAction2___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1019 */
+  /* ./parser//parser.nit:1017 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction2____goto(fra.me.REG[1]) = REGB0;
@@ -5089,7 +5077,7 @@ void parser___ReduceAction3___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1023;
+  fra.me.line = 1021;
   fra.me.meth = LOCATE_parser___ReduceAction3___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5102,40 +5090,40 @@ void parser___ReduceAction3___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1025 */
+  /* ./parser//parser.nit:1023 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1026 */
+  /* ./parser//parser.nit:1024 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1027 */
+  /* ./parser//parser.nit:1025 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1028 */
+  /* ./parser//parser.nit:1026 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1029 */
+  /* ./parser//parser.nit:1027 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1031 */
+  /* ./parser//parser.nit:1029 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1031);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1029);
   }
-  /* ./parser//parser.nit:1033 */
+  /* ./parser//parser.nit:1031 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1033);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1031);
   }
-  /* ./parser//parser.nit:1034 */
+  /* ./parser//parser.nit:1032 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:1035 */
+  /* ./parser//parser.nit:1033 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1040 */
+  /* ./parser//parser.nit:1038 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1041 */
+  /* ./parser//parser.nit:1039 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction3____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1041);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1039);
   }
   REGB0 = ATTR_parser___ReduceAction3____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5151,7 +5139,7 @@ void parser___ReduceAction3___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1044;
+  fra.me.line = 1042;
   fra.me.meth = LOCATE_parser___ReduceAction3___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5159,7 +5147,7 @@ void parser___ReduceAction3___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1044 */
+  /* ./parser//parser.nit:1042 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction3____goto(fra.me.REG[1]) = REGB0;
@@ -5173,7 +5161,7 @@ void parser___ReduceAction4___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1048;
+  fra.me.line = 1046;
   fra.me.meth = LOCATE_parser___ReduceAction4___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -5185,32 +5173,32 @@ void parser___ReduceAction4___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1050 */
+  /* ./parser//parser.nit:1048 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1051 */
+  /* ./parser//parser.nit:1049 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1052 */
+  /* ./parser//parser.nit:1050 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1053 */
+  /* ./parser//parser.nit:1051 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1055 */
+  /* ./parser//parser.nit:1053 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1055);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1053);
   }
-  /* ./parser//parser.nit:1056 */
+  /* ./parser//parser.nit:1054 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:1057 */
+  /* ./parser//parser.nit:1055 */
   fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:1062 */
+  /* ./parser//parser.nit:1060 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:1063 */
+  /* ./parser//parser.nit:1061 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction4____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1063);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1061);
   }
   REGB0 = ATTR_parser___ReduceAction4____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5226,7 +5214,7 @@ void parser___ReduceAction4___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1066;
+  fra.me.line = 1064;
   fra.me.meth = LOCATE_parser___ReduceAction4___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5234,7 +5222,7 @@ void parser___ReduceAction4___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1066 */
+  /* ./parser//parser.nit:1064 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction4____goto(fra.me.REG[1]) = REGB0;
@@ -5248,7 +5236,7 @@ void parser___ReduceAction5___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1070;
+  fra.me.line = 1068;
   fra.me.meth = LOCATE_parser___ReduceAction5___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5261,40 +5249,40 @@ void parser___ReduceAction5___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1072 */
+  /* ./parser//parser.nit:1070 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1073 */
+  /* ./parser//parser.nit:1071 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1074 */
+  /* ./parser//parser.nit:1072 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1075 */
+  /* ./parser//parser.nit:1073 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1076 */
+  /* ./parser//parser.nit:1074 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1078 */
+  /* ./parser//parser.nit:1076 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1078);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1076);
   }
-  /* ./parser//parser.nit:1080 */
+  /* ./parser//parser.nit:1078 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1080);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1078);
   }
-  /* ./parser//parser.nit:1081 */
+  /* ./parser//parser.nit:1079 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:1082 */
+  /* ./parser//parser.nit:1080 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1087 */
+  /* ./parser//parser.nit:1085 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1088 */
+  /* ./parser//parser.nit:1086 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction5____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1088);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1086);
   }
   REGB0 = ATTR_parser___ReduceAction5____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5310,7 +5298,7 @@ void parser___ReduceAction5___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1091;
+  fra.me.line = 1089;
   fra.me.meth = LOCATE_parser___ReduceAction5___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5318,7 +5306,7 @@ void parser___ReduceAction5___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1091 */
+  /* ./parser//parser.nit:1089 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction5____goto(fra.me.REG[1]) = REGB0;
@@ -5332,7 +5320,7 @@ void parser___ReduceAction6___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1095;
+  fra.me.line = 1093;
   fra.me.meth = LOCATE_parser___ReduceAction6___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5345,43 +5333,43 @@ void parser___ReduceAction6___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1097 */
+  /* ./parser//parser.nit:1095 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1098 */
+  /* ./parser//parser.nit:1096 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1099 */
+  /* ./parser//parser.nit:1097 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1100 */
+  /* ./parser//parser.nit:1098 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1101 */
+  /* ./parser//parser.nit:1099 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1103 */
+  /* ./parser//parser.nit:1101 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1101);
   }
-  /* ./parser//parser.nit:1104 */
+  /* ./parser//parser.nit:1102 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:1106 */
+  /* ./parser//parser.nit:1104 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1106);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1104);
   }
-  /* ./parser//parser.nit:1107 */
+  /* ./parser//parser.nit:1105 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:1108 */
+  /* ./parser//parser.nit:1106 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1113 */
+  /* ./parser//parser.nit:1111 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1114 */
+  /* ./parser//parser.nit:1112 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction6____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1114);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1112);
   }
   REGB0 = ATTR_parser___ReduceAction6____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5397,7 +5385,7 @@ void parser___ReduceAction6___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos10]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1117;
+  fra.me.line = 1115;
   fra.me.meth = LOCATE_parser___ReduceAction6___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5405,7 +5393,7 @@ void parser___ReduceAction6___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1117 */
+  /* ./parser//parser.nit:1115 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction6____goto(fra.me.REG[1]) = REGB0;
@@ -5419,7 +5407,7 @@ void parser___ReduceAction7___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1121;
+  fra.me.line = 1119;
   fra.me.meth = LOCATE_parser___ReduceAction7___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -5433,51 +5421,51 @@ void parser___ReduceAction7___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1123 */
+  /* ./parser//parser.nit:1121 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1124 */
+  /* ./parser//parser.nit:1122 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1125 */
+  /* ./parser//parser.nit:1123 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1126 */
+  /* ./parser//parser.nit:1124 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1127 */
+  /* ./parser//parser.nit:1125 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1128 */
+  /* ./parser//parser.nit:1126 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1130 */
+  /* ./parser//parser.nit:1128 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1130);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1128);
   }
-  /* ./parser//parser.nit:1132 */
+  /* ./parser//parser.nit:1130 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1130);
   }
-  /* ./parser//parser.nit:1133 */
+  /* ./parser//parser.nit:1131 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1135 */
+  /* ./parser//parser.nit:1133 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1135);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1133);
   }
-  /* ./parser//parser.nit:1136 */
+  /* ./parser//parser.nit:1134 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:1137 */
+  /* ./parser//parser.nit:1135 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1142 */
+  /* ./parser//parser.nit:1140 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1143 */
+  /* ./parser//parser.nit:1141 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction7____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1143);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1141);
   }
   REGB0 = ATTR_parser___ReduceAction7____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5493,7 +5481,7 @@ void parser___ReduceAction7___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos11]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1146;
+  fra.me.line = 1144;
   fra.me.meth = LOCATE_parser___ReduceAction7___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5501,7 +5489,7 @@ void parser___ReduceAction7___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1146 */
+  /* ./parser//parser.nit:1144 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction7____goto(fra.me.REG[1]) = REGB0;
@@ -5516,7 +5504,7 @@ void parser___ReduceAction8___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1150;
+  fra.me.line = 1148;
   fra.me.meth = LOCATE_parser___ReduceAction8___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5529,28 +5517,28 @@ void parser___ReduceAction8___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1152 */
+  /* ./parser//parser.nit:1150 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1153 */
+  /* ./parser//parser.nit:1151 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1154 */
+  /* ./parser//parser.nit:1152 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1155 */
+  /* ./parser//parser.nit:1153 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1156 */
+  /* ./parser//parser.nit:1154 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1158 */
+  /* ./parser//parser.nit:1156 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1158);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1156);
   }
-  /* ./parser//parser.nit:1159 */
+  /* ./parser//parser.nit:1157 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:1160 */
+  /* ./parser//parser.nit:1158 */
   fra.me.REG[6] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* ./parser//parser.nit:1163 */
+  /* ./parser//parser.nit:1161 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5565,18 +5553,18 @@ void parser___ReduceAction8___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1164 */
+    /* ./parser//parser.nit:1162 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
-  /* ./parser//parser.nit:1166 */
+  /* ./parser//parser.nit:1164 */
   fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:1171 */
+  /* ./parser//parser.nit:1169 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:1172 */
+  /* ./parser//parser.nit:1170 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction8____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1172);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1170);
   }
   REGB0 = ATTR_parser___ReduceAction8____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5592,7 +5580,7 @@ void parser___ReduceAction8___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos12]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1175;
+  fra.me.line = 1173;
   fra.me.meth = LOCATE_parser___ReduceAction8___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5600,7 +5588,7 @@ void parser___ReduceAction8___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1175 */
+  /* ./parser//parser.nit:1173 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction8____goto(fra.me.REG[1]) = REGB0;
@@ -5615,7 +5603,7 @@ void parser___ReduceAction9___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1179;
+  fra.me.line = 1177;
   fra.me.meth = LOCATE_parser___ReduceAction9___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -5629,36 +5617,36 @@ void parser___ReduceAction9___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1181 */
+  /* ./parser//parser.nit:1179 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1182 */
+  /* ./parser//parser.nit:1180 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1183 */
+  /* ./parser//parser.nit:1181 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1184 */
+  /* ./parser//parser.nit:1182 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1185 */
+  /* ./parser//parser.nit:1183 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1187 */
+  /* ./parser//parser.nit:1185 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1187);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1185);
   }
-  /* ./parser//parser.nit:1188 */
+  /* ./parser//parser.nit:1186 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1190 */
+  /* ./parser//parser.nit:1188 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1190);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1188);
   }
-  /* ./parser//parser.nit:1191 */
+  /* ./parser//parser.nit:1189 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:1192 */
+  /* ./parser//parser.nit:1190 */
   fra.me.REG[7] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
-  /* ./parser//parser.nit:1195 */
+  /* ./parser//parser.nit:1193 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5673,18 +5661,18 @@ void parser___ReduceAction9___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1196 */
+    /* ./parser//parser.nit:1194 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
-  /* ./parser//parser.nit:1198 */
+  /* ./parser//parser.nit:1196 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1203 */
+  /* ./parser//parser.nit:1201 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1204 */
+  /* ./parser//parser.nit:1202 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction9____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1204);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1202);
   }
   REGB0 = ATTR_parser___ReduceAction9____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5700,7 +5688,7 @@ void parser___ReduceAction9___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos13]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1207;
+  fra.me.line = 1205;
   fra.me.meth = LOCATE_parser___ReduceAction9___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5708,7 +5696,7 @@ void parser___ReduceAction9___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1207 */
+  /* ./parser//parser.nit:1205 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction9____goto(fra.me.REG[1]) = REGB0;
@@ -5723,7 +5711,7 @@ void parser___ReduceAction10___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1211;
+  fra.me.line = 1209;
   fra.me.meth = LOCATE_parser___ReduceAction10___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5736,39 +5724,39 @@ void parser___ReduceAction10___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1213 */
+  /* ./parser//parser.nit:1211 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1214 */
+  /* ./parser//parser.nit:1212 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1215 */
+  /* ./parser//parser.nit:1213 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1216 */
+  /* ./parser//parser.nit:1214 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1217 */
+  /* ./parser//parser.nit:1215 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1219 */
+  /* ./parser//parser.nit:1217 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1219);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1217);
   }
-  /* ./parser//parser.nit:1220 */
+  /* ./parser//parser.nit:1218 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:1221 */
+  /* ./parser//parser.nit:1219 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1223 */
+  /* ./parser//parser.nit:1221 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1223);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1221);
   }
-  /* ./parser//parser.nit:1224 */
+  /* ./parser//parser.nit:1222 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:1225 */
+  /* ./parser//parser.nit:1223 */
   fra.me.REG[4] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* ./parser//parser.nit:1228 */
+  /* ./parser//parser.nit:1226 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5783,18 +5771,18 @@ void parser___ReduceAction10___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1229 */
+    /* ./parser//parser.nit:1227 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:1231 */
+  /* ./parser//parser.nit:1229 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1236 */
+  /* ./parser//parser.nit:1234 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1237 */
+  /* ./parser//parser.nit:1235 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction10____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1237);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1235);
   }
   REGB0 = ATTR_parser___ReduceAction10____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5810,7 +5798,7 @@ void parser___ReduceAction10___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos14]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1240;
+  fra.me.line = 1238;
   fra.me.meth = LOCATE_parser___ReduceAction10___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5818,7 +5806,7 @@ void parser___ReduceAction10___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1240 */
+  /* ./parser//parser.nit:1238 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction10____goto(fra.me.REG[1]) = REGB0;
@@ -5833,7 +5821,7 @@ void parser___ReduceAction11___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1244;
+  fra.me.line = 1242;
   fra.me.meth = LOCATE_parser___ReduceAction11___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -5847,47 +5835,47 @@ void parser___ReduceAction11___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1246 */
+  /* ./parser//parser.nit:1244 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1247 */
+  /* ./parser//parser.nit:1245 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1248 */
+  /* ./parser//parser.nit:1246 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1249 */
+  /* ./parser//parser.nit:1247 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1250 */
+  /* ./parser//parser.nit:1248 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1251 */
+  /* ./parser//parser.nit:1249 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1253 */
+  /* ./parser//parser.nit:1251 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1253);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1251);
   }
-  /* ./parser//parser.nit:1255 */
+  /* ./parser//parser.nit:1253 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1255);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1253);
   }
-  /* ./parser//parser.nit:1256 */
+  /* ./parser//parser.nit:1254 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1257 */
+  /* ./parser//parser.nit:1255 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1259 */
+  /* ./parser//parser.nit:1257 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1259);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1257);
   }
-  /* ./parser//parser.nit:1260 */
+  /* ./parser//parser.nit:1258 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:1261 */
+  /* ./parser//parser.nit:1259 */
   fra.me.REG[4] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[4]);
-  /* ./parser//parser.nit:1264 */
+  /* ./parser//parser.nit:1262 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5902,18 +5890,18 @@ void parser___ReduceAction11___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1265 */
+    /* ./parser//parser.nit:1263 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:1267 */
+  /* ./parser//parser.nit:1265 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1272 */
+  /* ./parser//parser.nit:1270 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1273 */
+  /* ./parser//parser.nit:1271 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction11____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1273);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1271);
   }
   REGB0 = ATTR_parser___ReduceAction11____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -5929,7 +5917,7 @@ void parser___ReduceAction11___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos15]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1276;
+  fra.me.line = 1274;
   fra.me.meth = LOCATE_parser___ReduceAction11___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5937,7 +5925,7 @@ void parser___ReduceAction11___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1276 */
+  /* ./parser//parser.nit:1274 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction11____goto(fra.me.REG[1]) = REGB0;
@@ -5952,7 +5940,7 @@ void parser___ReduceAction12___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1280;
+  fra.me.line = 1278;
   fra.me.meth = LOCATE_parser___ReduceAction12___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -5966,39 +5954,39 @@ void parser___ReduceAction12___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1282 */
+  /* ./parser//parser.nit:1280 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1283 */
+  /* ./parser//parser.nit:1281 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1284 */
+  /* ./parser//parser.nit:1282 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1285 */
+  /* ./parser//parser.nit:1283 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1286 */
+  /* ./parser//parser.nit:1284 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1288 */
+  /* ./parser//parser.nit:1286 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1288);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1286);
   }
-  /* ./parser//parser.nit:1289 */
+  /* ./parser//parser.nit:1287 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1291 */
+  /* ./parser//parser.nit:1289 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1291);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1289);
   }
-  /* ./parser//parser.nit:1292 */
+  /* ./parser//parser.nit:1290 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:1293 */
+  /* ./parser//parser.nit:1291 */
   fra.me.REG[7] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
-  /* ./parser//parser.nit:1296 */
+  /* ./parser//parser.nit:1294 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1297 */
+  /* ./parser//parser.nit:1295 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6013,18 +6001,18 @@ void parser___ReduceAction12___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1298 */
+    /* ./parser//parser.nit:1296 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
-  /* ./parser//parser.nit:1300 */
+  /* ./parser//parser.nit:1298 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1305 */
+  /* ./parser//parser.nit:1303 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1306 */
+  /* ./parser//parser.nit:1304 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction12____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1306);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1304);
   }
   REGB0 = ATTR_parser___ReduceAction12____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6040,7 +6028,7 @@ void parser___ReduceAction12___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos16]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1309;
+  fra.me.line = 1307;
   fra.me.meth = LOCATE_parser___ReduceAction12___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6048,7 +6036,7 @@ void parser___ReduceAction12___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1309 */
+  /* ./parser//parser.nit:1307 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction12____goto(fra.me.REG[1]) = REGB0;
@@ -6063,7 +6051,7 @@ void parser___ReduceAction13___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1313;
+  fra.me.line = 1311;
   fra.me.meth = LOCATE_parser___ReduceAction13___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -6078,47 +6066,47 @@ void parser___ReduceAction13___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1315 */
+  /* ./parser//parser.nit:1313 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1316 */
+  /* ./parser//parser.nit:1314 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1317 */
+  /* ./parser//parser.nit:1315 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1318 */
+  /* ./parser//parser.nit:1316 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1319 */
+  /* ./parser//parser.nit:1317 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1320 */
+  /* ./parser//parser.nit:1318 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1322 */
+  /* ./parser//parser.nit:1320 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1322);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1320);
   }
-  /* ./parser//parser.nit:1324 */
+  /* ./parser//parser.nit:1322 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1324);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1322);
   }
-  /* ./parser//parser.nit:1325 */
+  /* ./parser//parser.nit:1323 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1327 */
+  /* ./parser//parser.nit:1325 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1327);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1325);
   }
-  /* ./parser//parser.nit:1328 */
+  /* ./parser//parser.nit:1326 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* ./parser//parser.nit:1329 */
+  /* ./parser//parser.nit:1327 */
   fra.me.REG[8] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* ./parser//parser.nit:1332 */
+  /* ./parser//parser.nit:1330 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:1333 */
+  /* ./parser//parser.nit:1331 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6133,18 +6121,18 @@ void parser___ReduceAction13___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1334 */
+    /* ./parser//parser.nit:1332 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
-  /* ./parser//parser.nit:1336 */
+  /* ./parser//parser.nit:1334 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1341 */
+  /* ./parser//parser.nit:1339 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1342 */
+  /* ./parser//parser.nit:1340 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction13____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1342);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1340);
   }
   REGB0 = ATTR_parser___ReduceAction13____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6160,7 +6148,7 @@ void parser___ReduceAction13___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos17]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1345;
+  fra.me.line = 1343;
   fra.me.meth = LOCATE_parser___ReduceAction13___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6168,7 +6156,7 @@ void parser___ReduceAction13___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1345 */
+  /* ./parser//parser.nit:1343 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction13____goto(fra.me.REG[1]) = REGB0;
@@ -6183,7 +6171,7 @@ void parser___ReduceAction14___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1349;
+  fra.me.line = 1347;
   fra.me.meth = LOCATE_parser___ReduceAction14___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -6197,50 +6185,50 @@ void parser___ReduceAction14___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1351 */
+  /* ./parser//parser.nit:1349 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1352 */
+  /* ./parser//parser.nit:1350 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1353 */
+  /* ./parser//parser.nit:1351 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1354 */
+  /* ./parser//parser.nit:1352 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1355 */
+  /* ./parser//parser.nit:1353 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1356 */
+  /* ./parser//parser.nit:1354 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1358 */
+  /* ./parser//parser.nit:1356 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1358);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1356);
   }
-  /* ./parser//parser.nit:1359 */
+  /* ./parser//parser.nit:1357 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* ./parser//parser.nit:1361 */
+  /* ./parser//parser.nit:1359 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1361);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1359);
   }
-  /* ./parser//parser.nit:1362 */
+  /* ./parser//parser.nit:1360 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1364 */
+  /* ./parser//parser.nit:1362 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1364);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1362);
   }
-  /* ./parser//parser.nit:1365 */
+  /* ./parser//parser.nit:1363 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:1366 */
+  /* ./parser//parser.nit:1364 */
   fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* ./parser//parser.nit:1369 */
+  /* ./parser//parser.nit:1367 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:1370 */
+  /* ./parser//parser.nit:1368 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6255,18 +6243,18 @@ void parser___ReduceAction14___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1371 */
+    /* ./parser//parser.nit:1369 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
   }
-  /* ./parser//parser.nit:1373 */
+  /* ./parser//parser.nit:1371 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1378 */
+  /* ./parser//parser.nit:1376 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1379 */
+  /* ./parser//parser.nit:1377 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction14____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1379);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1377);
   }
   REGB0 = ATTR_parser___ReduceAction14____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6282,7 +6270,7 @@ void parser___ReduceAction14___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos18]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1382;
+  fra.me.line = 1380;
   fra.me.meth = LOCATE_parser___ReduceAction14___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6290,7 +6278,7 @@ void parser___ReduceAction14___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1382 */
+  /* ./parser//parser.nit:1380 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction14____goto(fra.me.REG[1]) = REGB0;
@@ -6305,7 +6293,7 @@ void parser___ReduceAction15___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1386;
+  fra.me.line = 1384;
   fra.me.meth = LOCATE_parser___ReduceAction15___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -6320,58 +6308,58 @@ void parser___ReduceAction15___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1388 */
+  /* ./parser//parser.nit:1386 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1389 */
+  /* ./parser//parser.nit:1387 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1390 */
+  /* ./parser//parser.nit:1388 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1391 */
+  /* ./parser//parser.nit:1389 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1392 */
+  /* ./parser//parser.nit:1390 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1393 */
+  /* ./parser//parser.nit:1391 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1394 */
+  /* ./parser//parser.nit:1392 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1396 */
+  /* ./parser//parser.nit:1394 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1396);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1394);
   }
-  /* ./parser//parser.nit:1398 */
+  /* ./parser//parser.nit:1396 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1398);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1396);
   }
-  /* ./parser//parser.nit:1399 */
+  /* ./parser//parser.nit:1397 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:1401 */
+  /* ./parser//parser.nit:1399 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1401);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1399);
   }
-  /* ./parser//parser.nit:1402 */
+  /* ./parser//parser.nit:1400 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1404 */
+  /* ./parser//parser.nit:1402 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1402);
   }
-  /* ./parser//parser.nit:1405 */
+  /* ./parser//parser.nit:1403 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:1406 */
+  /* ./parser//parser.nit:1404 */
   fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* ./parser//parser.nit:1409 */
+  /* ./parser//parser.nit:1407 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* ./parser//parser.nit:1410 */
+  /* ./parser//parser.nit:1408 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6386,18 +6374,18 @@ void parser___ReduceAction15___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1411 */
+    /* ./parser//parser.nit:1409 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
   }
-  /* ./parser//parser.nit:1413 */
+  /* ./parser//parser.nit:1411 */
   fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* ./parser//parser.nit:1418 */
+  /* ./parser//parser.nit:1416 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* ./parser//parser.nit:1419 */
+  /* ./parser//parser.nit:1417 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction15____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1419);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1417);
   }
   REGB0 = ATTR_parser___ReduceAction15____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6413,7 +6401,7 @@ void parser___ReduceAction15___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos19]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1422;
+  fra.me.line = 1420;
   fra.me.meth = LOCATE_parser___ReduceAction15___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6421,7 +6409,7 @@ void parser___ReduceAction15___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1422 */
+  /* ./parser//parser.nit:1420 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction15____goto(fra.me.REG[1]) = REGB0;
@@ -6436,7 +6424,7 @@ void parser___ReduceAction16___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1426;
+  fra.me.line = 1424;
   fra.me.meth = LOCATE_parser___ReduceAction16___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -6448,21 +6436,21 @@ void parser___ReduceAction16___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1428 */
+  /* ./parser//parser.nit:1426 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1429 */
+  /* ./parser//parser.nit:1427 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1430 */
+  /* ./parser//parser.nit:1428 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1431 */
+  /* ./parser//parser.nit:1429 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1433 */
+  /* ./parser//parser.nit:1431 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1433);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1431);
   }
-  /* ./parser//parser.nit:1434 */
+  /* ./parser//parser.nit:1432 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6477,18 +6465,18 @@ void parser___ReduceAction16___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1435 */
+    /* ./parser//parser.nit:1433 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1437 */
+  /* ./parser//parser.nit:1435 */
   fra.me.REG[5] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:1442 */
+  /* ./parser//parser.nit:1440 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:1443 */
+  /* ./parser//parser.nit:1441 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction16____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1443);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1441);
   }
   REGB0 = ATTR_parser___ReduceAction16____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6504,7 +6492,7 @@ void parser___ReduceAction16___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos20]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1446;
+  fra.me.line = 1444;
   fra.me.meth = LOCATE_parser___ReduceAction16___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6512,7 +6500,7 @@ void parser___ReduceAction16___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1446 */
+  /* ./parser//parser.nit:1444 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction16____goto(fra.me.REG[1]) = REGB0;
@@ -6527,7 +6515,7 @@ void parser___ReduceAction17___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1450;
+  fra.me.line = 1448;
   fra.me.meth = LOCATE_parser___ReduceAction17___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -6540,29 +6528,29 @@ void parser___ReduceAction17___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1452 */
+  /* ./parser//parser.nit:1450 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1453 */
+  /* ./parser//parser.nit:1451 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1454 */
+  /* ./parser//parser.nit:1452 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1455 */
+  /* ./parser//parser.nit:1453 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1456 */
+  /* ./parser//parser.nit:1454 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1458 */
+  /* ./parser//parser.nit:1456 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1458);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1456);
   }
-  /* ./parser//parser.nit:1460 */
+  /* ./parser//parser.nit:1458 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1460);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1458);
   }
-  /* ./parser//parser.nit:1461 */
+  /* ./parser//parser.nit:1459 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6577,18 +6565,18 @@ void parser___ReduceAction17___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1462 */
+    /* ./parser//parser.nit:1460 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1464 */
+  /* ./parser//parser.nit:1462 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1469 */
+  /* ./parser//parser.nit:1467 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1470 */
+  /* ./parser//parser.nit:1468 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction17____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1470);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1468);
   }
   REGB0 = ATTR_parser___ReduceAction17____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6604,7 +6592,7 @@ void parser___ReduceAction17___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos21]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1473;
+  fra.me.line = 1471;
   fra.me.meth = LOCATE_parser___ReduceAction17___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6612,7 +6600,7 @@ void parser___ReduceAction17___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1473 */
+  /* ./parser//parser.nit:1471 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction17____goto(fra.me.REG[1]) = REGB0;
@@ -6627,7 +6615,7 @@ void parser___ReduceAction18___action(val_t p0, val_t p1){
   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.line = 1475;
   fra.me.meth = LOCATE_parser___ReduceAction18___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -6640,32 +6628,32 @@ void parser___ReduceAction18___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1479 */
+  /* ./parser//parser.nit:1477 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1480 */
+  /* ./parser//parser.nit:1478 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1481 */
+  /* ./parser//parser.nit:1479 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1482 */
+  /* ./parser//parser.nit:1480 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1483 */
+  /* ./parser//parser.nit:1481 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1485 */
+  /* ./parser//parser.nit:1483 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1485);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1483);
   }
-  /* ./parser//parser.nit:1486 */
+  /* ./parser//parser.nit:1484 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:1488 */
+  /* ./parser//parser.nit:1486 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1488);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1486);
   }
-  /* ./parser//parser.nit:1489 */
+  /* ./parser//parser.nit:1487 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6680,18 +6668,18 @@ void parser___ReduceAction18___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1490 */
+    /* ./parser//parser.nit:1488 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1492 */
+  /* ./parser//parser.nit:1490 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1497 */
+  /* ./parser//parser.nit:1495 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1498 */
+  /* ./parser//parser.nit:1496 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction18____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1498);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1496);
   }
   REGB0 = ATTR_parser___ReduceAction18____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6707,7 +6695,7 @@ void parser___ReduceAction18___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos22]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1501;
+  fra.me.line = 1499;
   fra.me.meth = LOCATE_parser___ReduceAction18___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6715,7 +6703,7 @@ void parser___ReduceAction18___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1501 */
+  /* ./parser//parser.nit:1499 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction18____goto(fra.me.REG[1]) = REGB0;
@@ -6730,7 +6718,7 @@ void parser___ReduceAction19___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1505;
+  fra.me.line = 1503;
   fra.me.meth = LOCATE_parser___ReduceAction19___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -6744,40 +6732,40 @@ void parser___ReduceAction19___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1507 */
+  /* ./parser//parser.nit:1505 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1508 */
+  /* ./parser//parser.nit:1506 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1509 */
+  /* ./parser//parser.nit:1507 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1510 */
+  /* ./parser//parser.nit:1508 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1511 */
+  /* ./parser//parser.nit:1509 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1512 */
+  /* ./parser//parser.nit:1510 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1514 */
+  /* ./parser//parser.nit:1512 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1514);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1512);
   }
-  /* ./parser//parser.nit:1516 */
+  /* ./parser//parser.nit:1514 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1516);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1514);
   }
-  /* ./parser//parser.nit:1517 */
+  /* ./parser//parser.nit:1515 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1519 */
+  /* ./parser//parser.nit:1517 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1517);
   }
-  /* ./parser//parser.nit:1520 */
+  /* ./parser//parser.nit:1518 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6792,18 +6780,18 @@ void parser___ReduceAction19___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1521 */
+    /* ./parser//parser.nit:1519 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1523 */
+  /* ./parser//parser.nit:1521 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1528 */
+  /* ./parser//parser.nit:1526 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1529 */
+  /* ./parser//parser.nit:1527 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction19____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1529);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1527);
   }
   REGB0 = ATTR_parser___ReduceAction19____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6819,7 +6807,7 @@ void parser___ReduceAction19___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos23]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1532;
+  fra.me.line = 1530;
   fra.me.meth = LOCATE_parser___ReduceAction19___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6827,7 +6815,7 @@ void parser___ReduceAction19___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1532 */
+  /* ./parser//parser.nit:1530 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction19____goto(fra.me.REG[1]) = REGB0;
@@ -6842,7 +6830,7 @@ void parser___ReduceAction20___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1536;
+  fra.me.line = 1534;
   fra.me.meth = LOCATE_parser___ReduceAction20___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -6855,32 +6843,32 @@ void parser___ReduceAction20___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1538 */
+  /* ./parser//parser.nit:1536 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1539 */
+  /* ./parser//parser.nit:1537 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1540 */
+  /* ./parser//parser.nit:1538 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1541 */
+  /* ./parser//parser.nit:1539 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1542 */
+  /* ./parser//parser.nit:1540 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1544 */
+  /* ./parser//parser.nit:1542 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1544);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1542);
   }
-  /* ./parser//parser.nit:1546 */
+  /* ./parser//parser.nit:1544 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1546);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1544);
   }
-  /* ./parser//parser.nit:1547 */
+  /* ./parser//parser.nit:1545 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1548 */
+  /* ./parser//parser.nit:1546 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -6895,18 +6883,18 @@ void parser___ReduceAction20___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1549 */
+    /* ./parser//parser.nit:1547 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1551 */
+  /* ./parser//parser.nit:1549 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1556 */
+  /* ./parser//parser.nit:1554 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1557 */
+  /* ./parser//parser.nit:1555 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction20____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1557);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1555);
   }
   REGB0 = ATTR_parser___ReduceAction20____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -6922,7 +6910,7 @@ void parser___ReduceAction20___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos24]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1560;
+  fra.me.line = 1558;
   fra.me.meth = LOCATE_parser___ReduceAction20___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -6930,7 +6918,7 @@ void parser___ReduceAction20___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1560 */
+  /* ./parser//parser.nit:1558 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction20____goto(fra.me.REG[1]) = REGB0;
@@ -6945,7 +6933,7 @@ void parser___ReduceAction21___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1564;
+  fra.me.line = 1562;
   fra.me.meth = LOCATE_parser___ReduceAction21___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -6959,40 +6947,40 @@ void parser___ReduceAction21___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1566 */
+  /* ./parser//parser.nit:1564 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1567 */
+  /* ./parser//parser.nit:1565 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1568 */
+  /* ./parser//parser.nit:1566 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1569 */
+  /* ./parser//parser.nit:1567 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1570 */
+  /* ./parser//parser.nit:1568 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1571 */
+  /* ./parser//parser.nit:1569 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1573 */
+  /* ./parser//parser.nit:1571 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1573);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1571);
   }
-  /* ./parser//parser.nit:1575 */
+  /* ./parser//parser.nit:1573 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1575);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1573);
   }
-  /* ./parser//parser.nit:1577 */
+  /* ./parser//parser.nit:1575 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1577);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1575);
   }
-  /* ./parser//parser.nit:1578 */
+  /* ./parser//parser.nit:1576 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:1579 */
+  /* ./parser//parser.nit:1577 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7007,18 +6995,18 @@ void parser___ReduceAction21___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1580 */
+    /* ./parser//parser.nit:1578 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1582 */
+  /* ./parser//parser.nit:1580 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1587 */
+  /* ./parser//parser.nit:1585 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1588 */
+  /* ./parser//parser.nit:1586 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction21____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1588);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1586);
   }
   REGB0 = ATTR_parser___ReduceAction21____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7034,7 +7022,7 @@ void parser___ReduceAction21___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos25]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1591;
+  fra.me.line = 1589;
   fra.me.meth = LOCATE_parser___ReduceAction21___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7042,7 +7030,7 @@ void parser___ReduceAction21___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1591 */
+  /* ./parser//parser.nit:1589 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction21____goto(fra.me.REG[1]) = REGB0;
@@ -7057,7 +7045,7 @@ void parser___ReduceAction22___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1595;
+  fra.me.line = 1593;
   fra.me.meth = LOCATE_parser___ReduceAction22___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -7071,43 +7059,43 @@ void parser___ReduceAction22___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1597 */
+  /* ./parser//parser.nit:1595 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1598 */
+  /* ./parser//parser.nit:1596 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1599 */
+  /* ./parser//parser.nit:1597 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1600 */
+  /* ./parser//parser.nit:1598 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1601 */
+  /* ./parser//parser.nit:1599 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1602 */
+  /* ./parser//parser.nit:1600 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1604 */
+  /* ./parser//parser.nit:1602 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1604);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1602);
   }
-  /* ./parser//parser.nit:1605 */
+  /* ./parser//parser.nit:1603 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* ./parser//parser.nit:1607 */
+  /* ./parser//parser.nit:1605 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1607);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1605);
   }
-  /* ./parser//parser.nit:1609 */
+  /* ./parser//parser.nit:1607 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1609);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1607);
   }
-  /* ./parser//parser.nit:1610 */
+  /* ./parser//parser.nit:1608 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:1611 */
+  /* ./parser//parser.nit:1609 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7122,18 +7110,18 @@ void parser___ReduceAction22___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1612 */
+    /* ./parser//parser.nit:1610 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1614 */
+  /* ./parser//parser.nit:1612 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1619 */
+  /* ./parser//parser.nit:1617 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1620 */
+  /* ./parser//parser.nit:1618 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction22____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1620);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1618);
   }
   REGB0 = ATTR_parser___ReduceAction22____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7149,7 +7137,7 @@ void parser___ReduceAction22___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos26]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1623;
+  fra.me.line = 1621;
   fra.me.meth = LOCATE_parser___ReduceAction22___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7157,7 +7145,7 @@ void parser___ReduceAction22___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1623 */
+  /* ./parser//parser.nit:1621 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction22____goto(fra.me.REG[1]) = REGB0;
@@ -7172,7 +7160,7 @@ void parser___ReduceAction23___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1627;
+  fra.me.line = 1625;
   fra.me.meth = LOCATE_parser___ReduceAction23___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -7187,51 +7175,51 @@ void parser___ReduceAction23___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1629 */
+  /* ./parser//parser.nit:1627 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1630 */
+  /* ./parser//parser.nit:1628 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1631 */
+  /* ./parser//parser.nit:1629 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1632 */
+  /* ./parser//parser.nit:1630 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1633 */
+  /* ./parser//parser.nit:1631 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1634 */
+  /* ./parser//parser.nit:1632 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1635 */
+  /* ./parser//parser.nit:1633 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1637 */
+  /* ./parser//parser.nit:1635 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1637);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1635);
   }
-  /* ./parser//parser.nit:1639 */
+  /* ./parser//parser.nit:1637 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1639);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1637);
   }
-  /* ./parser//parser.nit:1640 */
+  /* ./parser//parser.nit:1638 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:1642 */
+  /* ./parser//parser.nit:1640 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1642);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1640);
   }
-  /* ./parser//parser.nit:1644 */
+  /* ./parser//parser.nit:1642 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1644);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1642);
   }
-  /* ./parser//parser.nit:1645 */
+  /* ./parser//parser.nit:1643 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* ./parser//parser.nit:1646 */
+  /* ./parser//parser.nit:1644 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7246,18 +7234,18 @@ void parser___ReduceAction23___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1647 */
+    /* ./parser//parser.nit:1645 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1649 */
+  /* ./parser//parser.nit:1647 */
   fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* ./parser//parser.nit:1654 */
+  /* ./parser//parser.nit:1652 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* ./parser//parser.nit:1655 */
+  /* ./parser//parser.nit:1653 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction23____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1655);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1653);
   }
   REGB0 = ATTR_parser___ReduceAction23____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7273,7 +7261,7 @@ void parser___ReduceAction23___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos27]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1658;
+  fra.me.line = 1656;
   fra.me.meth = LOCATE_parser___ReduceAction23___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7281,7 +7269,7 @@ void parser___ReduceAction23___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1658 */
+  /* ./parser//parser.nit:1656 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction23____goto(fra.me.REG[1]) = REGB0;
@@ -7296,7 +7284,7 @@ void parser___ReduceAction24___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1662;
+  fra.me.line = 1660;
   fra.me.meth = LOCATE_parser___ReduceAction24___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -7310,36 +7298,36 @@ void parser___ReduceAction24___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1664 */
+  /* ./parser//parser.nit:1662 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1665 */
+  /* ./parser//parser.nit:1663 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1666 */
+  /* ./parser//parser.nit:1664 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1667 */
+  /* ./parser//parser.nit:1665 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1668 */
+  /* ./parser//parser.nit:1666 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1669 */
+  /* ./parser//parser.nit:1667 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1671 */
+  /* ./parser//parser.nit:1669 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1671);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1669);
   }
-  /* ./parser//parser.nit:1672 */
+  /* ./parser//parser.nit:1670 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:1673 */
+  /* ./parser//parser.nit:1671 */
   fra.me.REG[7] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[7]);
-  /* ./parser//parser.nit:1677 */
+  /* ./parser//parser.nit:1675 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1677);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1675);
   }
-  /* ./parser//parser.nit:1678 */
+  /* ./parser//parser.nit:1676 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7354,10 +7342,10 @@ void parser___ReduceAction24___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1679 */
+    /* ./parser//parser.nit:1677 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
-  /* ./parser//parser.nit:1681 */
+  /* ./parser//parser.nit:1679 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7372,18 +7360,18 @@ void parser___ReduceAction24___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1682 */
+    /* ./parser//parser.nit:1680 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1684 */
+  /* ./parser//parser.nit:1682 */
   fra.me.REG[6] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:1689 */
+  /* ./parser//parser.nit:1687 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:1690 */
+  /* ./parser//parser.nit:1688 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction24____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1690);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1688);
   }
   REGB0 = ATTR_parser___ReduceAction24____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7399,7 +7387,7 @@ void parser___ReduceAction24___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos28]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1693;
+  fra.me.line = 1691;
   fra.me.meth = LOCATE_parser___ReduceAction24___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7407,7 +7395,7 @@ void parser___ReduceAction24___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1693 */
+  /* ./parser//parser.nit:1691 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction24____goto(fra.me.REG[1]) = REGB0;
@@ -7422,7 +7410,7 @@ void parser___ReduceAction25___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1697;
+  fra.me.line = 1695;
   fra.me.meth = LOCATE_parser___ReduceAction25___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -7437,44 +7425,44 @@ void parser___ReduceAction25___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1699 */
+  /* ./parser//parser.nit:1697 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1700 */
+  /* ./parser//parser.nit:1698 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1701 */
+  /* ./parser//parser.nit:1699 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1702 */
+  /* ./parser//parser.nit:1700 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1703 */
+  /* ./parser//parser.nit:1701 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1704 */
+  /* ./parser//parser.nit:1702 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1706 */
+  /* ./parser//parser.nit:1704 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1706);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1704);
   }
-  /* ./parser//parser.nit:1707 */
+  /* ./parser//parser.nit:1705 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1709 */
+  /* ./parser//parser.nit:1707 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1709);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1707);
   }
-  /* ./parser//parser.nit:1710 */
+  /* ./parser//parser.nit:1708 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* ./parser//parser.nit:1711 */
+  /* ./parser//parser.nit:1709 */
   fra.me.REG[8] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* ./parser//parser.nit:1715 */
+  /* ./parser//parser.nit:1713 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1715);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1713);
   }
-  /* ./parser//parser.nit:1716 */
+  /* ./parser//parser.nit:1714 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7489,10 +7477,10 @@ void parser___ReduceAction25___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1717 */
+    /* ./parser//parser.nit:1715 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
-  /* ./parser//parser.nit:1719 */
+  /* ./parser//parser.nit:1717 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7507,18 +7495,18 @@ void parser___ReduceAction25___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1720 */
+    /* ./parser//parser.nit:1718 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1722 */
+  /* ./parser//parser.nit:1720 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1727 */
+  /* ./parser//parser.nit:1725 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1728 */
+  /* ./parser//parser.nit:1726 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction25____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1728);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1726);
   }
   REGB0 = ATTR_parser___ReduceAction25____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7534,7 +7522,7 @@ void parser___ReduceAction25___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos29]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1731;
+  fra.me.line = 1729;
   fra.me.meth = LOCATE_parser___ReduceAction25___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7542,7 +7530,7 @@ void parser___ReduceAction25___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1731 */
+  /* ./parser//parser.nit:1729 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction25____goto(fra.me.REG[1]) = REGB0;
@@ -7557,7 +7545,7 @@ void parser___ReduceAction26___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1735;
+  fra.me.line = 1733;
   fra.me.meth = LOCATE_parser___ReduceAction26___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -7571,47 +7559,47 @@ void parser___ReduceAction26___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1737 */
+  /* ./parser//parser.nit:1735 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1738 */
+  /* ./parser//parser.nit:1736 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1739 */
+  /* ./parser//parser.nit:1737 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1740 */
+  /* ./parser//parser.nit:1738 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1741 */
+  /* ./parser//parser.nit:1739 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1742 */
+  /* ./parser//parser.nit:1740 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1744 */
+  /* ./parser//parser.nit:1742 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1744);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1742);
   }
-  /* ./parser//parser.nit:1745 */
+  /* ./parser//parser.nit:1743 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* ./parser//parser.nit:1746 */
+  /* ./parser//parser.nit:1744 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1748 */
+  /* ./parser//parser.nit:1746 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1748);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1746);
   }
-  /* ./parser//parser.nit:1749 */
+  /* ./parser//parser.nit:1747 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:1750 */
+  /* ./parser//parser.nit:1748 */
   fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* ./parser//parser.nit:1754 */
+  /* ./parser//parser.nit:1752 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1754);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1752);
   }
-  /* ./parser//parser.nit:1755 */
+  /* ./parser//parser.nit:1753 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7626,10 +7614,10 @@ void parser___ReduceAction26___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1756 */
+    /* ./parser//parser.nit:1754 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
   }
-  /* ./parser//parser.nit:1758 */
+  /* ./parser//parser.nit:1756 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7644,18 +7632,18 @@ void parser___ReduceAction26___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1759 */
+    /* ./parser//parser.nit:1757 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1761 */
+  /* ./parser//parser.nit:1759 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1766 */
+  /* ./parser//parser.nit:1764 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1767 */
+  /* ./parser//parser.nit:1765 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction26____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1767);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1765);
   }
   REGB0 = ATTR_parser___ReduceAction26____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7671,7 +7659,7 @@ void parser___ReduceAction26___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos30]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1770;
+  fra.me.line = 1768;
   fra.me.meth = LOCATE_parser___ReduceAction26___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7679,7 +7667,7 @@ void parser___ReduceAction26___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1770 */
+  /* ./parser//parser.nit:1768 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction26____goto(fra.me.REG[1]) = REGB0;
@@ -7694,7 +7682,7 @@ void parser___ReduceAction27___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1774;
+  fra.me.line = 1772;
   fra.me.meth = LOCATE_parser___ReduceAction27___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -7709,55 +7697,55 @@ void parser___ReduceAction27___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1776 */
+  /* ./parser//parser.nit:1774 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1777 */
+  /* ./parser//parser.nit:1775 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1778 */
+  /* ./parser//parser.nit:1776 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1779 */
+  /* ./parser//parser.nit:1777 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1780 */
+  /* ./parser//parser.nit:1778 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1781 */
+  /* ./parser//parser.nit:1779 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1782 */
+  /* ./parser//parser.nit:1780 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1784 */
+  /* ./parser//parser.nit:1782 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1784);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1782);
   }
-  /* ./parser//parser.nit:1786 */
+  /* ./parser//parser.nit:1784 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1786);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1784);
   }
-  /* ./parser//parser.nit:1787 */
+  /* ./parser//parser.nit:1785 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:1788 */
+  /* ./parser//parser.nit:1786 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1790 */
+  /* ./parser//parser.nit:1788 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1790);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1788);
   }
-  /* ./parser//parser.nit:1791 */
+  /* ./parser//parser.nit:1789 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:1792 */
+  /* ./parser//parser.nit:1790 */
   fra.me.REG[5] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[5]);
-  /* ./parser//parser.nit:1796 */
+  /* ./parser//parser.nit:1794 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1796);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1794);
   }
-  /* ./parser//parser.nit:1797 */
+  /* ./parser//parser.nit:1795 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7772,10 +7760,10 @@ void parser___ReduceAction27___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1798 */
+    /* ./parser//parser.nit:1796 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
   }
-  /* ./parser//parser.nit:1800 */
+  /* ./parser//parser.nit:1798 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7790,18 +7778,18 @@ void parser___ReduceAction27___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1801 */
+    /* ./parser//parser.nit:1799 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1803 */
+  /* ./parser//parser.nit:1801 */
   fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* ./parser//parser.nit:1808 */
+  /* ./parser//parser.nit:1806 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* ./parser//parser.nit:1809 */
+  /* ./parser//parser.nit:1807 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction27____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1809);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1807);
   }
   REGB0 = ATTR_parser___ReduceAction27____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7817,7 +7805,7 @@ void parser___ReduceAction27___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos31]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1812;
+  fra.me.line = 1810;
   fra.me.meth = LOCATE_parser___ReduceAction27___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7825,7 +7813,7 @@ void parser___ReduceAction27___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1812 */
+  /* ./parser//parser.nit:1810 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction27____goto(fra.me.REG[1]) = REGB0;
@@ -7840,7 +7828,7 @@ void parser___ReduceAction28___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1816;
+  fra.me.line = 1814;
   fra.me.meth = LOCATE_parser___ReduceAction28___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -7855,47 +7843,47 @@ void parser___ReduceAction28___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1818 */
+  /* ./parser//parser.nit:1816 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1819 */
+  /* ./parser//parser.nit:1817 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1820 */
+  /* ./parser//parser.nit:1818 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1821 */
+  /* ./parser//parser.nit:1819 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1822 */
+  /* ./parser//parser.nit:1820 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1823 */
+  /* ./parser//parser.nit:1821 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1825 */
+  /* ./parser//parser.nit:1823 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1825);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1823);
   }
-  /* ./parser//parser.nit:1826 */
+  /* ./parser//parser.nit:1824 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1828 */
+  /* ./parser//parser.nit:1826 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1828);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1826);
   }
-  /* ./parser//parser.nit:1829 */
+  /* ./parser//parser.nit:1827 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[4]);
   fra.me.REG[8] = fra.me.REG[4];
-  /* ./parser//parser.nit:1830 */
+  /* ./parser//parser.nit:1828 */
   fra.me.REG[8] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[8]);
-  /* ./parser//parser.nit:1834 */
+  /* ./parser//parser.nit:1832 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1834);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1832);
   }
-  /* ./parser//parser.nit:1835 */
+  /* ./parser//parser.nit:1833 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:1836 */
+  /* ./parser//parser.nit:1834 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7910,10 +7898,10 @@ void parser___ReduceAction28___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1837 */
+    /* ./parser//parser.nit:1835 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
-  /* ./parser//parser.nit:1839 */
+  /* ./parser//parser.nit:1837 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -7928,18 +7916,18 @@ void parser___ReduceAction28___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1840 */
+    /* ./parser//parser.nit:1838 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1842 */
+  /* ./parser//parser.nit:1840 */
   fra.me.REG[7] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:1847 */
+  /* ./parser//parser.nit:1845 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:1848 */
+  /* ./parser//parser.nit:1846 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction28____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1848);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1846);
   }
   REGB0 = ATTR_parser___ReduceAction28____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -7955,7 +7943,7 @@ void parser___ReduceAction28___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos32]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1851;
+  fra.me.line = 1849;
   fra.me.meth = LOCATE_parser___ReduceAction28___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -7963,7 +7951,7 @@ void parser___ReduceAction28___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1851 */
+  /* ./parser//parser.nit:1849 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction28____goto(fra.me.REG[1]) = REGB0;
@@ -7978,7 +7966,7 @@ void parser___ReduceAction29___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1855;
+  fra.me.line = 1853;
   fra.me.meth = LOCATE_parser___ReduceAction29___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -7994,55 +7982,55 @@ void parser___ReduceAction29___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1857 */
+  /* ./parser//parser.nit:1855 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1858 */
+  /* ./parser//parser.nit:1856 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1859 */
+  /* ./parser//parser.nit:1857 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1860 */
+  /* ./parser//parser.nit:1858 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1861 */
+  /* ./parser//parser.nit:1859 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1862 */
+  /* ./parser//parser.nit:1860 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1863 */
+  /* ./parser//parser.nit:1861 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1865 */
+  /* ./parser//parser.nit:1863 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1865);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1863);
   }
-  /* ./parser//parser.nit:1867 */
+  /* ./parser//parser.nit:1865 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1867);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1865);
   }
-  /* ./parser//parser.nit:1868 */
+  /* ./parser//parser.nit:1866 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1870 */
+  /* ./parser//parser.nit:1868 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1870);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1868);
   }
-  /* ./parser//parser.nit:1871 */
+  /* ./parser//parser.nit:1869 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* ./parser//parser.nit:1872 */
+  /* ./parser//parser.nit:1870 */
   fra.me.REG[9] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[9]);
-  /* ./parser//parser.nit:1876 */
+  /* ./parser//parser.nit:1874 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1876);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1874);
   }
-  /* ./parser//parser.nit:1877 */
+  /* ./parser//parser.nit:1875 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* ./parser//parser.nit:1878 */
+  /* ./parser//parser.nit:1876 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8057,10 +8045,10 @@ void parser___ReduceAction29___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1879 */
+    /* ./parser//parser.nit:1877 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
-  /* ./parser//parser.nit:1881 */
+  /* ./parser//parser.nit:1879 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8075,18 +8063,18 @@ void parser___ReduceAction29___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1882 */
+    /* ./parser//parser.nit:1880 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1884 */
+  /* ./parser//parser.nit:1882 */
   fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
-  /* ./parser//parser.nit:1889 */
+  /* ./parser//parser.nit:1887 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* ./parser//parser.nit:1890 */
+  /* ./parser//parser.nit:1888 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction29____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1890);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1888);
   }
   REGB0 = ATTR_parser___ReduceAction29____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8102,7 +8090,7 @@ void parser___ReduceAction29___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos33]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1893;
+  fra.me.line = 1891;
   fra.me.meth = LOCATE_parser___ReduceAction29___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8110,7 +8098,7 @@ void parser___ReduceAction29___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1893 */
+  /* ./parser//parser.nit:1891 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction29____goto(fra.me.REG[1]) = REGB0;
@@ -8125,7 +8113,7 @@ void parser___ReduceAction30___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1897;
+  fra.me.line = 1895;
   fra.me.meth = LOCATE_parser___ReduceAction30___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -8140,58 +8128,58 @@ void parser___ReduceAction30___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1899 */
+  /* ./parser//parser.nit:1897 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1900 */
+  /* ./parser//parser.nit:1898 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1901 */
+  /* ./parser//parser.nit:1899 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1902 */
+  /* ./parser//parser.nit:1900 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1903 */
+  /* ./parser//parser.nit:1901 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1904 */
+  /* ./parser//parser.nit:1902 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1905 */
+  /* ./parser//parser.nit:1903 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1907 */
+  /* ./parser//parser.nit:1905 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1907);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1905);
   }
-  /* ./parser//parser.nit:1908 */
+  /* ./parser//parser.nit:1906 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6]);
   fra.me.REG[7] = fra.me.REG[6];
-  /* ./parser//parser.nit:1910 */
+  /* ./parser//parser.nit:1908 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1910);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1908);
   }
-  /* ./parser//parser.nit:1911 */
+  /* ./parser//parser.nit:1909 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1913 */
+  /* ./parser//parser.nit:1911 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1913);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1911);
   }
-  /* ./parser//parser.nit:1914 */
+  /* ./parser//parser.nit:1912 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1915 */
+  /* ./parser//parser.nit:1913 */
   fra.me.REG[6] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* ./parser//parser.nit:1919 */
+  /* ./parser//parser.nit:1917 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1919);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1917);
   }
-  /* ./parser//parser.nit:1920 */
+  /* ./parser//parser.nit:1918 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* ./parser//parser.nit:1921 */
+  /* ./parser//parser.nit:1919 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8206,10 +8194,10 @@ void parser___ReduceAction30___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1922 */
+    /* ./parser//parser.nit:1920 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
   }
-  /* ./parser//parser.nit:1924 */
+  /* ./parser//parser.nit:1922 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8224,18 +8212,18 @@ void parser___ReduceAction30___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1925 */
+    /* ./parser//parser.nit:1923 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1927 */
+  /* ./parser//parser.nit:1925 */
   fra.me.REG[8] = NEW_AModule_parser_prod___AModule___init_amodule(NIT_NULL, fra.me.REG[7], fra.me.REG[8]);
-  /* ./parser//parser.nit:1932 */
+  /* ./parser//parser.nit:1930 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* ./parser//parser.nit:1933 */
+  /* ./parser//parser.nit:1931 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction30____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1933);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1931);
   }
   REGB0 = ATTR_parser___ReduceAction30____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8251,7 +8239,7 @@ void parser___ReduceAction30___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos34]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1936;
+  fra.me.line = 1934;
   fra.me.meth = LOCATE_parser___ReduceAction30___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8259,7 +8247,7 @@ void parser___ReduceAction30___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1936 */
+  /* ./parser//parser.nit:1934 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction30____goto(fra.me.REG[1]) = REGB0;
@@ -8274,7 +8262,7 @@ void parser___ReduceAction31___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1940;
+  fra.me.line = 1938;
   fra.me.meth = LOCATE_parser___ReduceAction31___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -8290,66 +8278,66 @@ void parser___ReduceAction31___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1942 */
+  /* ./parser//parser.nit:1940 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1943 */
+  /* ./parser//parser.nit:1941 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1944 */
+  /* ./parser//parser.nit:1942 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1945 */
+  /* ./parser//parser.nit:1943 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1946 */
+  /* ./parser//parser.nit:1944 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1947 */
+  /* ./parser//parser.nit:1945 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1948 */
+  /* ./parser//parser.nit:1946 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1949 */
+  /* ./parser//parser.nit:1947 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1951 */
+  /* ./parser//parser.nit:1949 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AModuledecl, ID_AModuledecl)) /*cast nullable AModuledecl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1951);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1949);
   }
-  /* ./parser//parser.nit:1953 */
+  /* ./parser//parser.nit:1951 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1953);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1951);
   }
-  /* ./parser//parser.nit:1954 */
+  /* ./parser//parser.nit:1952 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[6]);
   fra.me.REG[8] = fra.me.REG[6];
-  /* ./parser//parser.nit:1956 */
+  /* ./parser//parser.nit:1954 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1956);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1954);
   }
-  /* ./parser//parser.nit:1957 */
+  /* ./parser//parser.nit:1955 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:1959 */
+  /* ./parser//parser.nit:1957 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1959);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1957);
   }
-  /* ./parser//parser.nit:1960 */
+  /* ./parser//parser.nit:1958 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:1961 */
+  /* ./parser//parser.nit:1959 */
   fra.me.REG[6] = NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[6]);
-  /* ./parser//parser.nit:1965 */
+  /* ./parser//parser.nit:1963 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1965);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1963);
   }
-  /* ./parser//parser.nit:1966 */
+  /* ./parser//parser.nit:1964 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[5]);
   fra.me.REG[9] = fra.me.REG[5];
-  /* ./parser//parser.nit:1967 */
+  /* ./parser//parser.nit:1965 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8364,10 +8352,10 @@ void parser___ReduceAction31___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1968 */
+    /* ./parser//parser.nit:1966 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
   }
-  /* ./parser//parser.nit:1970 */
+  /* ./parser//parser.nit:1968 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8382,18 +8370,18 @@ void parser___ReduceAction31___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:1971 */
+    /* ./parser//parser.nit:1969 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:1973 */
+  /* ./parser//parser.nit:1971 */
   fra.me.REG[9] = NEW_AModule_parser_prod___AModule___init_amodule(fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* ./parser//parser.nit:1978 */
+  /* ./parser//parser.nit:1976 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* ./parser//parser.nit:1979 */
+  /* ./parser//parser.nit:1977 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction31____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1979);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 1977);
   }
   REGB0 = ATTR_parser___ReduceAction31____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8409,7 +8397,7 @@ void parser___ReduceAction31___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos35]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1982;
+  fra.me.line = 1980;
   fra.me.meth = LOCATE_parser___ReduceAction31___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8417,7 +8405,7 @@ void parser___ReduceAction31___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:1982 */
+  /* ./parser//parser.nit:1980 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction31____goto(fra.me.REG[1]) = REGB0;
@@ -8431,7 +8419,7 @@ void parser___ReduceAction32___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 1986;
+  fra.me.line = 1984;
   fra.me.meth = LOCATE_parser___ReduceAction32___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -8443,45 +8431,45 @@ void parser___ReduceAction32___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:1988 */
+  /* ./parser//parser.nit:1986 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:1989 */
+  /* ./parser//parser.nit:1987 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1990 */
+  /* ./parser//parser.nit:1988 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1991 */
+  /* ./parser//parser.nit:1989 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1992 */
+  /* ./parser//parser.nit:1990 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1993 */
+  /* ./parser//parser.nit:1991 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:1995 */
+  /* ./parser//parser.nit:1993 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1995);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1993);
   }
-  /* ./parser//parser.nit:1997 */
+  /* ./parser//parser.nit:1995 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwmodule, ID_TKwmodule)) /*cast nullable TKwmodule*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1997);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1995);
   }
-  /* ./parser//parser.nit:1999 */
+  /* ./parser//parser.nit:1997 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 1999);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 1997);
   }
-  /* ./parser//parser.nit:2000 */
+  /* ./parser//parser.nit:1998 */
   fra.me.REG[3] = NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:2005 */
+  /* ./parser//parser.nit:2003 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2006 */
+  /* ./parser//parser.nit:2004 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction32____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2006);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2004);
   }
   REGB0 = ATTR_parser___ReduceAction32____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8497,7 +8485,7 @@ void parser___ReduceAction32___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos36]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2009;
+  fra.me.line = 2007;
   fra.me.meth = LOCATE_parser___ReduceAction32___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8505,7 +8493,7 @@ void parser___ReduceAction32___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2009 */
+  /* ./parser//parser.nit:2007 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction32____goto(fra.me.REG[1]) = REGB0;
@@ -8519,7 +8507,7 @@ void parser___ReduceAction33___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2013;
+  fra.me.line = 2011;
   fra.me.meth = LOCATE_parser___ReduceAction33___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -8532,47 +8520,47 @@ void parser___ReduceAction33___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2015 */
+  /* ./parser//parser.nit:2013 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2016 */
+  /* ./parser//parser.nit:2014 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2017 */
+  /* ./parser//parser.nit:2015 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2018 */
+  /* ./parser//parser.nit:2016 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2019 */
+  /* ./parser//parser.nit:2017 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2020 */
+  /* ./parser//parser.nit:2018 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2021 */
+  /* ./parser//parser.nit:2019 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2023 */
+  /* ./parser//parser.nit:2021 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2023);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2021);
   }
-  /* ./parser//parser.nit:2025 */
+  /* ./parser//parser.nit:2023 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwimport, ID_TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2025);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2023);
   }
-  /* ./parser//parser.nit:2027 */
+  /* ./parser//parser.nit:2025 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2027);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2025);
   }
-  /* ./parser//parser.nit:2028 */
+  /* ./parser//parser.nit:2026 */
   fra.me.REG[3] = NEW_AStdImport_parser_prod___AStdImport___init_astdimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:2033 */
+  /* ./parser//parser.nit:2031 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2034 */
+  /* ./parser//parser.nit:2032 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction33____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2034);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2032);
   }
   REGB0 = ATTR_parser___ReduceAction33____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8588,7 +8576,7 @@ void parser___ReduceAction33___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos37]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2037;
+  fra.me.line = 2035;
   fra.me.meth = LOCATE_parser___ReduceAction33___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8596,7 +8584,7 @@ void parser___ReduceAction33___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2037 */
+  /* ./parser//parser.nit:2035 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction33____goto(fra.me.REG[1]) = REGB0;
@@ -8610,7 +8598,7 @@ void parser___ReduceAction34___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2041;
+  fra.me.line = 2039;
   fra.me.meth = LOCATE_parser___ReduceAction34___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -8623,47 +8611,47 @@ void parser___ReduceAction34___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2043 */
+  /* ./parser//parser.nit:2041 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2044 */
+  /* ./parser//parser.nit:2042 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2045 */
+  /* ./parser//parser.nit:2043 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2046 */
+  /* ./parser//parser.nit:2044 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2047 */
+  /* ./parser//parser.nit:2045 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2048 */
+  /* ./parser//parser.nit:2046 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2049 */
+  /* ./parser//parser.nit:2047 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2051 */
+  /* ./parser//parser.nit:2049 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2051);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2049);
   }
-  /* ./parser//parser.nit:2053 */
+  /* ./parser//parser.nit:2051 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwimport, ID_TKwimport)) /*cast nullable TKwimport*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2053);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2051);
   }
-  /* ./parser//parser.nit:2055 */
+  /* ./parser//parser.nit:2053 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwend, ID_TKwend)) /*cast nullable TKwend*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2055);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2053);
   }
-  /* ./parser//parser.nit:2056 */
+  /* ./parser//parser.nit:2054 */
   fra.me.REG[3] = NEW_ANoImport_parser_prod___ANoImport___init_anoimport(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:2061 */
+  /* ./parser//parser.nit:2059 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2062 */
+  /* ./parser//parser.nit:2060 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction34____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2062);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2060);
   }
   REGB0 = ATTR_parser___ReduceAction34____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8679,7 +8667,7 @@ void parser___ReduceAction34___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos38]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2065;
+  fra.me.line = 2063;
   fra.me.meth = LOCATE_parser___ReduceAction34___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8687,7 +8675,7 @@ void parser___ReduceAction34___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2065 */
+  /* ./parser//parser.nit:2063 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction34____goto(fra.me.REG[1]) = REGB0;
@@ -8702,7 +8690,7 @@ void parser___ReduceAction35___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2069;
+  fra.me.line = 2067;
   fra.me.meth = LOCATE_parser___ReduceAction35___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -8713,19 +8701,19 @@ void parser___ReduceAction35___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2071 */
+  /* ./parser//parser.nit:2069 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2072 */
+  /* ./parser//parser.nit:2070 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2073 */
+  /* ./parser//parser.nit:2071 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2075 */
+  /* ./parser//parser.nit:2073 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_APropdef, ID_APropdef)) /*cast nullable APropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2075);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2073);
   }
-  /* ./parser//parser.nit:2076 */
+  /* ./parser//parser.nit:2074 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8740,18 +8728,18 @@ void parser___ReduceAction35___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:2077 */
+    /* ./parser//parser.nit:2075 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:2079 */
+  /* ./parser//parser.nit:2077 */
   fra.me.REG[4] = NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[4]);
-  /* ./parser//parser.nit:2082 */
+  /* ./parser//parser.nit:2080 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:2083 */
+  /* ./parser//parser.nit:2081 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction35____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2083);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2081);
   }
   REGB0 = ATTR_parser___ReduceAction35____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8767,7 +8755,7 @@ void parser___ReduceAction35___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos39]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2086;
+  fra.me.line = 2084;
   fra.me.meth = LOCATE_parser___ReduceAction35___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8775,7 +8763,7 @@ void parser___ReduceAction35___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2086 */
+  /* ./parser//parser.nit:2084 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction35____goto(fra.me.REG[1]) = REGB0;
@@ -8789,7 +8777,7 @@ void parser___ReduceAction36___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2090;
+  fra.me.line = 2088;
   fra.me.meth = LOCATE_parser___ReduceAction36___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -8799,17 +8787,17 @@ void parser___ReduceAction36___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2092 */
+  /* ./parser//parser.nit:2090 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2093 */
+  /* ./parser//parser.nit:2091 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2094 */
+  /* ./parser//parser.nit:2092 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2095 */
+  /* ./parser//parser.nit:2093 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction36____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2095);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2093);
   }
   REGB0 = ATTR_parser___ReduceAction36____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8825,7 +8813,7 @@ void parser___ReduceAction36___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos40]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2098;
+  fra.me.line = 2096;
   fra.me.meth = LOCATE_parser___ReduceAction36___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8833,7 +8821,7 @@ void parser___ReduceAction36___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2098 */
+  /* ./parser//parser.nit:2096 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction36____goto(fra.me.REG[1]) = REGB0;
@@ -8847,7 +8835,7 @@ void parser___ReduceAction37___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2102;
+  fra.me.line = 2100;
   fra.me.meth = LOCATE_parser___ReduceAction37___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -8858,27 +8846,27 @@ void parser___ReduceAction37___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2104 */
+  /* ./parser//parser.nit:2102 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2105 */
+  /* ./parser//parser.nit:2103 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2106 */
+  /* ./parser//parser.nit:2104 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2108 */
+  /* ./parser//parser.nit:2106 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2108);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2106);
   }
-  /* ./parser//parser.nit:2109 */
+  /* ./parser//parser.nit:2107 */
   fra.me.REG[3] = NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef(NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:2113 */
+  /* ./parser//parser.nit:2111 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2114 */
+  /* ./parser//parser.nit:2112 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction37____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2114);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2112);
   }
   REGB0 = ATTR_parser___ReduceAction37____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -8894,7 +8882,7 @@ void parser___ReduceAction37___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos41]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2117;
+  fra.me.line = 2115;
   fra.me.meth = LOCATE_parser___ReduceAction37___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -8902,7 +8890,7 @@ void parser___ReduceAction37___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2117 */
+  /* ./parser//parser.nit:2115 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction37____goto(fra.me.REG[1]) = REGB0;
@@ -8916,7 +8904,7 @@ void parser___ReduceAction39___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2121;
+  fra.me.line = 2119;
   fra.me.meth = LOCATE_parser___ReduceAction39___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -8932,61 +8920,61 @@ void parser___ReduceAction39___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2123 */
+  /* ./parser//parser.nit:2121 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2124 */
+  /* ./parser//parser.nit:2122 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2125 */
+  /* ./parser//parser.nit:2123 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2126 */
+  /* ./parser//parser.nit:2124 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2127 */
+  /* ./parser//parser.nit:2125 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2128 */
+  /* ./parser//parser.nit:2126 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2129 */
+  /* ./parser//parser.nit:2127 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2130 */
+  /* ./parser//parser.nit:2128 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2131 */
+  /* ./parser//parser.nit:2129 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2132 */
+  /* ./parser//parser.nit:2130 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2133 */
+  /* ./parser//parser.nit:2131 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2135 */
+  /* ./parser//parser.nit:2133 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2135);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2133);
   }
-  /* ./parser//parser.nit:2137 */
+  /* ./parser//parser.nit:2135 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2137);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2135);
   }
-  /* ./parser//parser.nit:2139 */
+  /* ./parser//parser.nit:2137 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2139);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2137);
   }
-  /* ./parser//parser.nit:2141 */
+  /* ./parser//parser.nit:2139 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2141);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2139);
   }
-  /* ./parser//parser.nit:2142 */
+  /* ./parser//parser.nit:2140 */
   fra.me.REG[9] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9]);
-  /* ./parser//parser.nit:2152 */
+  /* ./parser//parser.nit:2150 */
   fra.me.REG[2] = fra.me.REG[9];
-  /* ./parser//parser.nit:2153 */
+  /* ./parser//parser.nit:2151 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction39____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2153);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2151);
   }
   REGB0 = ATTR_parser___ReduceAction39____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9002,7 +8990,7 @@ void parser___ReduceAction39___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos42]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2156;
+  fra.me.line = 2154;
   fra.me.meth = LOCATE_parser___ReduceAction39___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9010,7 +8998,7 @@ void parser___ReduceAction39___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2156 */
+  /* ./parser//parser.nit:2154 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction39____goto(fra.me.REG[1]) = REGB0;
@@ -9024,7 +9012,7 @@ void parser___ReduceAction40___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2160;
+  fra.me.line = 2158;
   fra.me.meth = LOCATE_parser___ReduceAction40___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -9041,69 +9029,69 @@ void parser___ReduceAction40___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2162 */
+  /* ./parser//parser.nit:2160 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2163 */
+  /* ./parser//parser.nit:2161 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2164 */
+  /* ./parser//parser.nit:2162 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2165 */
+  /* ./parser//parser.nit:2163 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2166 */
+  /* ./parser//parser.nit:2164 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2167 */
+  /* ./parser//parser.nit:2165 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2168 */
+  /* ./parser//parser.nit:2166 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2169 */
+  /* ./parser//parser.nit:2167 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2170 */
+  /* ./parser//parser.nit:2168 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2171 */
+  /* ./parser//parser.nit:2169 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2172 */
+  /* ./parser//parser.nit:2170 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2173 */
+  /* ./parser//parser.nit:2171 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2175 */
+  /* ./parser//parser.nit:2173 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2175);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2173);
   }
-  /* ./parser//parser.nit:2177 */
+  /* ./parser//parser.nit:2175 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2177);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2175);
   }
-  /* ./parser//parser.nit:2179 */
+  /* ./parser//parser.nit:2177 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2179);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2177);
   }
-  /* ./parser//parser.nit:2181 */
+  /* ./parser//parser.nit:2179 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2181);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2179);
   }
-  /* ./parser//parser.nit:2183 */
+  /* ./parser//parser.nit:2181 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2183);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2181);
   }
-  /* ./parser//parser.nit:2184 */
+  /* ./parser//parser.nit:2182 */
   fra.me.REG[10] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* ./parser//parser.nit:2194 */
+  /* ./parser//parser.nit:2192 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* ./parser//parser.nit:2195 */
+  /* ./parser//parser.nit:2193 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction40____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2195);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2193);
   }
   REGB0 = ATTR_parser___ReduceAction40____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9119,7 +9107,7 @@ void parser___ReduceAction40___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos43]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2198;
+  fra.me.line = 2196;
   fra.me.meth = LOCATE_parser___ReduceAction40___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9127,7 +9115,7 @@ void parser___ReduceAction40___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2198 */
+  /* ./parser//parser.nit:2196 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction40____goto(fra.me.REG[1]) = REGB0;
@@ -9141,7 +9129,7 @@ void parser___ReduceAction41___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2202;
+  fra.me.line = 2200;
   fra.me.meth = LOCATE_parser___ReduceAction41___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -9158,72 +9146,72 @@ void parser___ReduceAction41___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2204 */
+  /* ./parser//parser.nit:2202 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2205 */
+  /* ./parser//parser.nit:2203 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2206 */
+  /* ./parser//parser.nit:2204 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2207 */
+  /* ./parser//parser.nit:2205 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2208 */
+  /* ./parser//parser.nit:2206 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2209 */
+  /* ./parser//parser.nit:2207 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2210 */
+  /* ./parser//parser.nit:2208 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2211 */
+  /* ./parser//parser.nit:2209 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2212 */
+  /* ./parser//parser.nit:2210 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2213 */
+  /* ./parser//parser.nit:2211 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2214 */
+  /* ./parser//parser.nit:2212 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2215 */
+  /* ./parser//parser.nit:2213 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2217 */
+  /* ./parser//parser.nit:2215 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2217);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2215);
   }
-  /* ./parser//parser.nit:2219 */
+  /* ./parser//parser.nit:2217 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2219);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2217);
   }
-  /* ./parser//parser.nit:2221 */
+  /* ./parser//parser.nit:2219 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2221);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2219);
   }
-  /* ./parser//parser.nit:2223 */
+  /* ./parser//parser.nit:2221 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2223);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2221);
   }
-  /* ./parser//parser.nit:2225 */
+  /* ./parser//parser.nit:2223 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2225);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2223);
   }
-  /* ./parser//parser.nit:2226 */
+  /* ./parser//parser.nit:2224 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* ./parser//parser.nit:2227 */
+  /* ./parser//parser.nit:2225 */
   fra.me.REG[10] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* ./parser//parser.nit:2237 */
+  /* ./parser//parser.nit:2235 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* ./parser//parser.nit:2238 */
+  /* ./parser//parser.nit:2236 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction41____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2238);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2236);
   }
   REGB0 = ATTR_parser___ReduceAction41____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9239,7 +9227,7 @@ void parser___ReduceAction41___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos44]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2241;
+  fra.me.line = 2239;
   fra.me.meth = LOCATE_parser___ReduceAction41___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9247,7 +9235,7 @@ void parser___ReduceAction41___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2241 */
+  /* ./parser//parser.nit:2239 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction41____goto(fra.me.REG[1]) = REGB0;
@@ -9261,7 +9249,7 @@ void parser___ReduceAction42___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2245;
+  fra.me.line = 2243;
   fra.me.meth = LOCATE_parser___ReduceAction42___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -9279,80 +9267,80 @@ void parser___ReduceAction42___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2247 */
+  /* ./parser//parser.nit:2245 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2248 */
+  /* ./parser//parser.nit:2246 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2249 */
+  /* ./parser//parser.nit:2247 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2250 */
+  /* ./parser//parser.nit:2248 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2251 */
+  /* ./parser//parser.nit:2249 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2252 */
+  /* ./parser//parser.nit:2250 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2253 */
+  /* ./parser//parser.nit:2251 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2254 */
+  /* ./parser//parser.nit:2252 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2255 */
+  /* ./parser//parser.nit:2253 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2256 */
+  /* ./parser//parser.nit:2254 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2257 */
+  /* ./parser//parser.nit:2255 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2258 */
+  /* ./parser//parser.nit:2256 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2259 */
+  /* ./parser//parser.nit:2257 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2261 */
+  /* ./parser//parser.nit:2259 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2259);
+  }
+  /* ./parser//parser.nit:2261 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2261);
   }
   /* ./parser//parser.nit:2263 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2263);
   }
   /* ./parser//parser.nit:2265 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2265);
   }
   /* ./parser//parser.nit:2267 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2267);
   }
   /* ./parser//parser.nit:2269 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2269);
-  }
-  /* ./parser//parser.nit:2271 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2271);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2269);
   }
-  /* ./parser//parser.nit:2272 */
+  /* ./parser//parser.nit:2270 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
   fra.me.REG[9] = fra.me.REG[3];
-  /* ./parser//parser.nit:2273 */
+  /* ./parser//parser.nit:2271 */
   fra.me.REG[11] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* ./parser//parser.nit:2283 */
+  /* ./parser//parser.nit:2281 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* ./parser//parser.nit:2284 */
+  /* ./parser//parser.nit:2282 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction42____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2284);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2282);
   }
   REGB0 = ATTR_parser___ReduceAction42____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9368,7 +9356,7 @@ void parser___ReduceAction42___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos45]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2287;
+  fra.me.line = 2285;
   fra.me.meth = LOCATE_parser___ReduceAction42___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9376,7 +9364,7 @@ void parser___ReduceAction42___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2287 */
+  /* ./parser//parser.nit:2285 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction42____goto(fra.me.REG[1]) = REGB0;
@@ -9390,7 +9378,7 @@ void parser___ReduceAction43___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2291;
+  fra.me.line = 2289;
   fra.me.meth = LOCATE_parser___ReduceAction43___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -9407,72 +9395,72 @@ void parser___ReduceAction43___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2293 */
+  /* ./parser//parser.nit:2291 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2294 */
+  /* ./parser//parser.nit:2292 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2295 */
+  /* ./parser//parser.nit:2293 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2296 */
+  /* ./parser//parser.nit:2294 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2297 */
+  /* ./parser//parser.nit:2295 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2298 */
+  /* ./parser//parser.nit:2296 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2299 */
+  /* ./parser//parser.nit:2297 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2300 */
+  /* ./parser//parser.nit:2298 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2301 */
+  /* ./parser//parser.nit:2299 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2302 */
+  /* ./parser//parser.nit:2300 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2303 */
+  /* ./parser//parser.nit:2301 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2304 */
+  /* ./parser//parser.nit:2302 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2306 */
+  /* ./parser//parser.nit:2304 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2306);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2304);
   }
-  /* ./parser//parser.nit:2308 */
+  /* ./parser//parser.nit:2306 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2308);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2306);
   }
-  /* ./parser//parser.nit:2310 */
+  /* ./parser//parser.nit:2308 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2310);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2308);
   }
-  /* ./parser//parser.nit:2312 */
+  /* ./parser//parser.nit:2310 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2312);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2310);
   }
-  /* ./parser//parser.nit:2314 */
+  /* ./parser//parser.nit:2312 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2314);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2312);
   }
-  /* ./parser//parser.nit:2315 */
+  /* ./parser//parser.nit:2313 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[3]);
   fra.me.REG[9] = fra.me.REG[3];
-  /* ./parser//parser.nit:2316 */
+  /* ./parser//parser.nit:2314 */
   fra.me.REG[10] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* ./parser//parser.nit:2326 */
+  /* ./parser//parser.nit:2324 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* ./parser//parser.nit:2327 */
+  /* ./parser//parser.nit:2325 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction43____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2327);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2325);
   }
   REGB0 = ATTR_parser___ReduceAction43____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9488,7 +9476,7 @@ void parser___ReduceAction43___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos46]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2330;
+  fra.me.line = 2328;
   fra.me.meth = LOCATE_parser___ReduceAction43___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9496,7 +9484,7 @@ void parser___ReduceAction43___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2330 */
+  /* ./parser//parser.nit:2328 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction43____goto(fra.me.REG[1]) = REGB0;
@@ -9510,7 +9498,7 @@ void parser___ReduceAction44___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2334;
+  fra.me.line = 2332;
   fra.me.meth = LOCATE_parser___ReduceAction44___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -9528,80 +9516,80 @@ void parser___ReduceAction44___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2336 */
+  /* ./parser//parser.nit:2334 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2337 */
+  /* ./parser//parser.nit:2335 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2338 */
+  /* ./parser//parser.nit:2336 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2339 */
+  /* ./parser//parser.nit:2337 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2340 */
+  /* ./parser//parser.nit:2338 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2341 */
+  /* ./parser//parser.nit:2339 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2342 */
+  /* ./parser//parser.nit:2340 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2343 */
+  /* ./parser//parser.nit:2341 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2344 */
+  /* ./parser//parser.nit:2342 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2345 */
+  /* ./parser//parser.nit:2343 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2346 */
+  /* ./parser//parser.nit:2344 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2347 */
+  /* ./parser//parser.nit:2345 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2348 */
+  /* ./parser//parser.nit:2346 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2350 */
+  /* ./parser//parser.nit:2348 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2348);
+  }
+  /* ./parser//parser.nit:2350 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2350);
   }
   /* ./parser//parser.nit:2352 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2352);
   }
   /* ./parser//parser.nit:2354 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2354);
   }
   /* ./parser//parser.nit:2356 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2356);
   }
   /* ./parser//parser.nit:2358 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2358);
-  }
-  /* ./parser//parser.nit:2360 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2360);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2358);
   }
-  /* ./parser//parser.nit:2361 */
+  /* ./parser//parser.nit:2359 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[3]);
   fra.me.REG[10] = fra.me.REG[3];
-  /* ./parser//parser.nit:2362 */
+  /* ./parser//parser.nit:2360 */
   fra.me.REG[11] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* ./parser//parser.nit:2372 */
+  /* ./parser//parser.nit:2370 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* ./parser//parser.nit:2373 */
+  /* ./parser//parser.nit:2371 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction44____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2373);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2371);
   }
   REGB0 = ATTR_parser___ReduceAction44____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9617,7 +9605,7 @@ void parser___ReduceAction44___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos47]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2376;
+  fra.me.line = 2374;
   fra.me.meth = LOCATE_parser___ReduceAction44___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9625,7 +9613,7 @@ void parser___ReduceAction44___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2376 */
+  /* ./parser//parser.nit:2374 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction44____goto(fra.me.REG[1]) = REGB0;
@@ -9639,7 +9627,7 @@ void parser___ReduceAction45___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2380;
+  fra.me.line = 2378;
   fra.me.meth = LOCATE_parser___ReduceAction45___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -9657,83 +9645,83 @@ void parser___ReduceAction45___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2382 */
+  /* ./parser//parser.nit:2380 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2383 */
+  /* ./parser//parser.nit:2381 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2384 */
+  /* ./parser//parser.nit:2382 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2385 */
+  /* ./parser//parser.nit:2383 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2386 */
+  /* ./parser//parser.nit:2384 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2387 */
+  /* ./parser//parser.nit:2385 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2388 */
+  /* ./parser//parser.nit:2386 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2389 */
+  /* ./parser//parser.nit:2387 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2390 */
+  /* ./parser//parser.nit:2388 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2391 */
+  /* ./parser//parser.nit:2389 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2392 */
+  /* ./parser//parser.nit:2390 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2393 */
+  /* ./parser//parser.nit:2391 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2394 */
+  /* ./parser//parser.nit:2392 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2396 */
+  /* ./parser//parser.nit:2394 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2396);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2394);
   }
-  /* ./parser//parser.nit:2398 */
+  /* ./parser//parser.nit:2396 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2398);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2396);
   }
-  /* ./parser//parser.nit:2400 */
+  /* ./parser//parser.nit:2398 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2400);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2398);
   }
-  /* ./parser//parser.nit:2402 */
+  /* ./parser//parser.nit:2400 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2402);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2400);
   }
-  /* ./parser//parser.nit:2404 */
+  /* ./parser//parser.nit:2402 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2402);
   }
-  /* ./parser//parser.nit:2405 */
+  /* ./parser//parser.nit:2403 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* ./parser//parser.nit:2407 */
+  /* ./parser//parser.nit:2405 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2407);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2405);
   }
-  /* ./parser//parser.nit:2408 */
+  /* ./parser//parser.nit:2406 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[3]);
   fra.me.REG[10] = fra.me.REG[3];
-  /* ./parser//parser.nit:2409 */
+  /* ./parser//parser.nit:2407 */
   fra.me.REG[11] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* ./parser//parser.nit:2419 */
+  /* ./parser//parser.nit:2417 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* ./parser//parser.nit:2420 */
+  /* ./parser//parser.nit:2418 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction45____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2420);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2418);
   }
   REGB0 = ATTR_parser___ReduceAction45____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9749,7 +9737,7 @@ void parser___ReduceAction45___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos48]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2423;
+  fra.me.line = 2421;
   fra.me.meth = LOCATE_parser___ReduceAction45___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9757,7 +9745,7 @@ void parser___ReduceAction45___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2423 */
+  /* ./parser//parser.nit:2421 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction45____goto(fra.me.REG[1]) = REGB0;
@@ -9771,7 +9759,7 @@ void parser___ReduceAction46___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2427;
+  fra.me.line = 2425;
   fra.me.meth = LOCATE_parser___ReduceAction46___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -9790,91 +9778,91 @@ void parser___ReduceAction46___action(val_t p0, val_t p1){
   fra.me.REG[12] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2429 */
+  /* ./parser//parser.nit:2427 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2430 */
+  /* ./parser//parser.nit:2428 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2431 */
+  /* ./parser//parser.nit:2429 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2432 */
+  /* ./parser//parser.nit:2430 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2433 */
+  /* ./parser//parser.nit:2431 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2434 */
+  /* ./parser//parser.nit:2432 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2435 */
+  /* ./parser//parser.nit:2433 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2436 */
+  /* ./parser//parser.nit:2434 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2437 */
+  /* ./parser//parser.nit:2435 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2438 */
+  /* ./parser//parser.nit:2436 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2439 */
+  /* ./parser//parser.nit:2437 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2440 */
+  /* ./parser//parser.nit:2438 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2441 */
+  /* ./parser//parser.nit:2439 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2442 */
+  /* ./parser//parser.nit:2440 */
   fra.me.REG[12] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2444 */
+  /* ./parser//parser.nit:2442 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2442);
+  }
+  /* ./parser//parser.nit:2444 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2444);
   }
   /* ./parser//parser.nit:2446 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2446);
   }
   /* ./parser//parser.nit:2448 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2448);
   }
   /* ./parser//parser.nit:2450 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2450);
   }
   /* ./parser//parser.nit:2452 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2452);
-  }
-  /* ./parser//parser.nit:2454 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2454);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2452);
   }
-  /* ./parser//parser.nit:2455 */
+  /* ./parser//parser.nit:2453 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* ./parser//parser.nit:2457 */
+  /* ./parser//parser.nit:2455 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2457);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2455);
   }
-  /* ./parser//parser.nit:2458 */
+  /* ./parser//parser.nit:2456 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
   fra.me.REG[11] = fra.me.REG[3];
-  /* ./parser//parser.nit:2459 */
+  /* ./parser//parser.nit:2457 */
   fra.me.REG[12] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], fra.me.REG[11], fra.me.REG[12]);
-  /* ./parser//parser.nit:2469 */
+  /* ./parser//parser.nit:2467 */
   fra.me.REG[2] = fra.me.REG[12];
-  /* ./parser//parser.nit:2470 */
+  /* ./parser//parser.nit:2468 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction46____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2470);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2468);
   }
   REGB0 = ATTR_parser___ReduceAction46____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -9890,7 +9878,7 @@ void parser___ReduceAction46___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos49]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2473;
+  fra.me.line = 2471;
   fra.me.meth = LOCATE_parser___ReduceAction46___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -9898,7 +9886,7 @@ void parser___ReduceAction46___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2473 */
+  /* ./parser//parser.nit:2471 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction46____goto(fra.me.REG[1]) = REGB0;
@@ -9912,7 +9900,7 @@ void parser___ReduceAction47___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2477;
+  fra.me.line = 2475;
   fra.me.meth = LOCATE_parser___ReduceAction47___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -9929,72 +9917,72 @@ void parser___ReduceAction47___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2479 */
+  /* ./parser//parser.nit:2477 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2480 */
+  /* ./parser//parser.nit:2478 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2481 */
+  /* ./parser//parser.nit:2479 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2482 */
+  /* ./parser//parser.nit:2480 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2483 */
+  /* ./parser//parser.nit:2481 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2484 */
+  /* ./parser//parser.nit:2482 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2485 */
+  /* ./parser//parser.nit:2483 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2486 */
+  /* ./parser//parser.nit:2484 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2487 */
+  /* ./parser//parser.nit:2485 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2488 */
+  /* ./parser//parser.nit:2486 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2489 */
+  /* ./parser//parser.nit:2487 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2490 */
+  /* ./parser//parser.nit:2488 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2492 */
+  /* ./parser//parser.nit:2490 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2492);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2490);
   }
-  /* ./parser//parser.nit:2494 */
+  /* ./parser//parser.nit:2492 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2494);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2492);
   }
-  /* ./parser//parser.nit:2496 */
+  /* ./parser//parser.nit:2494 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2496);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2494);
   }
-  /* ./parser//parser.nit:2498 */
+  /* ./parser//parser.nit:2496 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2498);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2496);
   }
-  /* ./parser//parser.nit:2500 */
+  /* ./parser//parser.nit:2498 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2500);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2498);
   }
-  /* ./parser//parser.nit:2501 */
+  /* ./parser//parser.nit:2499 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[3]);
   fra.me.REG[10] = fra.me.REG[3];
-  /* ./parser//parser.nit:2502 */
+  /* ./parser//parser.nit:2500 */
   fra.me.REG[10] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[8], fra.me.REG[9], fra.me.REG[10]);
-  /* ./parser//parser.nit:2512 */
+  /* ./parser//parser.nit:2510 */
   fra.me.REG[2] = fra.me.REG[10];
-  /* ./parser//parser.nit:2513 */
+  /* ./parser//parser.nit:2511 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction47____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2513);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2511);
   }
   REGB0 = ATTR_parser___ReduceAction47____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10010,7 +9998,7 @@ void parser___ReduceAction47___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos50]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2516;
+  fra.me.line = 2514;
   fra.me.meth = LOCATE_parser___ReduceAction47___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10018,7 +10006,7 @@ void parser___ReduceAction47___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2516 */
+  /* ./parser//parser.nit:2514 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction47____goto(fra.me.REG[1]) = REGB0;
@@ -10032,7 +10020,7 @@ void parser___ReduceAction48___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2520;
+  fra.me.line = 2518;
   fra.me.meth = LOCATE_parser___ReduceAction48___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -10050,80 +10038,80 @@ void parser___ReduceAction48___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2522 */
+  /* ./parser//parser.nit:2520 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2523 */
+  /* ./parser//parser.nit:2521 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2524 */
+  /* ./parser//parser.nit:2522 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2525 */
+  /* ./parser//parser.nit:2523 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2526 */
+  /* ./parser//parser.nit:2524 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2527 */
+  /* ./parser//parser.nit:2525 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2528 */
+  /* ./parser//parser.nit:2526 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2529 */
+  /* ./parser//parser.nit:2527 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2530 */
+  /* ./parser//parser.nit:2528 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2531 */
+  /* ./parser//parser.nit:2529 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2532 */
+  /* ./parser//parser.nit:2530 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2533 */
+  /* ./parser//parser.nit:2531 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2534 */
+  /* ./parser//parser.nit:2532 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2536 */
+  /* ./parser//parser.nit:2534 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2534);
+  }
+  /* ./parser//parser.nit:2536 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2536);
   }
   /* ./parser//parser.nit:2538 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2538);
   }
   /* ./parser//parser.nit:2540 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2540);
   }
   /* ./parser//parser.nit:2542 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2542);
   }
   /* ./parser//parser.nit:2544 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2544);
-  }
-  /* ./parser//parser.nit:2546 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2546);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2544);
   }
-  /* ./parser//parser.nit:2547 */
+  /* ./parser//parser.nit:2545 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
   fra.me.REG[11] = fra.me.REG[3];
-  /* ./parser//parser.nit:2548 */
+  /* ./parser//parser.nit:2546 */
   fra.me.REG[11] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* ./parser//parser.nit:2558 */
+  /* ./parser//parser.nit:2556 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* ./parser//parser.nit:2559 */
+  /* ./parser//parser.nit:2557 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction48____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2559);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2557);
   }
   REGB0 = ATTR_parser___ReduceAction48____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10139,7 +10127,7 @@ void parser___ReduceAction48___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos51]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2562;
+  fra.me.line = 2560;
   fra.me.meth = LOCATE_parser___ReduceAction48___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10147,7 +10135,7 @@ void parser___ReduceAction48___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2562 */
+  /* ./parser//parser.nit:2560 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction48____goto(fra.me.REG[1]) = REGB0;
@@ -10161,7 +10149,7 @@ void parser___ReduceAction49___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2566;
+  fra.me.line = 2564;
   fra.me.meth = LOCATE_parser___ReduceAction49___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -10179,83 +10167,83 @@ void parser___ReduceAction49___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2568 */
+  /* ./parser//parser.nit:2566 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2569 */
+  /* ./parser//parser.nit:2567 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2570 */
+  /* ./parser//parser.nit:2568 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2571 */
+  /* ./parser//parser.nit:2569 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2572 */
+  /* ./parser//parser.nit:2570 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2573 */
+  /* ./parser//parser.nit:2571 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2574 */
+  /* ./parser//parser.nit:2572 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2575 */
+  /* ./parser//parser.nit:2573 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2576 */
+  /* ./parser//parser.nit:2574 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2577 */
+  /* ./parser//parser.nit:2575 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2578 */
+  /* ./parser//parser.nit:2576 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2579 */
+  /* ./parser//parser.nit:2577 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2580 */
+  /* ./parser//parser.nit:2578 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2582 */
+  /* ./parser//parser.nit:2580 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2582);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2580);
   }
-  /* ./parser//parser.nit:2584 */
+  /* ./parser//parser.nit:2582 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2584);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2582);
   }
-  /* ./parser//parser.nit:2586 */
+  /* ./parser//parser.nit:2584 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2586);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2584);
   }
-  /* ./parser//parser.nit:2588 */
+  /* ./parser//parser.nit:2586 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2588);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2586);
   }
-  /* ./parser//parser.nit:2590 */
+  /* ./parser//parser.nit:2588 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2590);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2588);
   }
-  /* ./parser//parser.nit:2591 */
+  /* ./parser//parser.nit:2589 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[4]);
   fra.me.REG[9] = fra.me.REG[4];
-  /* ./parser//parser.nit:2593 */
+  /* ./parser//parser.nit:2591 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2593);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2591);
   }
-  /* ./parser//parser.nit:2594 */
+  /* ./parser//parser.nit:2592 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
   fra.me.REG[11] = fra.me.REG[3];
-  /* ./parser//parser.nit:2595 */
+  /* ./parser//parser.nit:2593 */
   fra.me.REG[11] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* ./parser//parser.nit:2605 */
+  /* ./parser//parser.nit:2603 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* ./parser//parser.nit:2606 */
+  /* ./parser//parser.nit:2604 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction49____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2606);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2604);
   }
   REGB0 = ATTR_parser___ReduceAction49____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10271,7 +10259,7 @@ void parser___ReduceAction49___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos52]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2609;
+  fra.me.line = 2607;
   fra.me.meth = LOCATE_parser___ReduceAction49___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10279,7 +10267,7 @@ void parser___ReduceAction49___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2609 */
+  /* ./parser//parser.nit:2607 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction49____goto(fra.me.REG[1]) = REGB0;
@@ -10293,7 +10281,7 @@ void parser___ReduceAction50___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2613;
+  fra.me.line = 2611;
   fra.me.meth = LOCATE_parser___ReduceAction50___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -10312,91 +10300,91 @@ void parser___ReduceAction50___action(val_t p0, val_t p1){
   fra.me.REG[12] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2615 */
+  /* ./parser//parser.nit:2613 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2616 */
+  /* ./parser//parser.nit:2614 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2617 */
+  /* ./parser//parser.nit:2615 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2618 */
+  /* ./parser//parser.nit:2616 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2619 */
+  /* ./parser//parser.nit:2617 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2620 */
+  /* ./parser//parser.nit:2618 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2621 */
+  /* ./parser//parser.nit:2619 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2622 */
+  /* ./parser//parser.nit:2620 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2623 */
+  /* ./parser//parser.nit:2621 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2624 */
+  /* ./parser//parser.nit:2622 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2625 */
+  /* ./parser//parser.nit:2623 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2626 */
+  /* ./parser//parser.nit:2624 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2627 */
+  /* ./parser//parser.nit:2625 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2628 */
+  /* ./parser//parser.nit:2626 */
   fra.me.REG[12] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2630 */
+  /* ./parser//parser.nit:2628 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2628);
+  }
+  /* ./parser//parser.nit:2630 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2630);
   }
   /* ./parser//parser.nit:2632 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2632);
   }
   /* ./parser//parser.nit:2634 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2634);
   }
   /* ./parser//parser.nit:2636 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2636);
   }
   /* ./parser//parser.nit:2638 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2638);
-  }
-  /* ./parser//parser.nit:2640 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2640);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2638);
   }
-  /* ./parser//parser.nit:2641 */
+  /* ./parser//parser.nit:2639 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* ./parser//parser.nit:2643 */
+  /* ./parser//parser.nit:2641 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2643);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2641);
   }
-  /* ./parser//parser.nit:2644 */
+  /* ./parser//parser.nit:2642 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[3]);
   fra.me.REG[12] = fra.me.REG[3];
-  /* ./parser//parser.nit:2645 */
+  /* ./parser//parser.nit:2643 */
   fra.me.REG[12] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], fra.me.REG[11], fra.me.REG[12]);
-  /* ./parser//parser.nit:2655 */
+  /* ./parser//parser.nit:2653 */
   fra.me.REG[2] = fra.me.REG[12];
-  /* ./parser//parser.nit:2656 */
+  /* ./parser//parser.nit:2654 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction50____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2656);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2654);
   }
   REGB0 = ATTR_parser___ReduceAction50____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10412,7 +10400,7 @@ void parser___ReduceAction50___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos53]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2659;
+  fra.me.line = 2657;
   fra.me.meth = LOCATE_parser___ReduceAction50___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10420,7 +10408,7 @@ void parser___ReduceAction50___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2659 */
+  /* ./parser//parser.nit:2657 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction50____goto(fra.me.REG[1]) = REGB0;
@@ -10434,7 +10422,7 @@ void parser___ReduceAction51___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2663;
+  fra.me.line = 2661;
   fra.me.meth = LOCATE_parser___ReduceAction51___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -10452,83 +10440,83 @@ void parser___ReduceAction51___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2665 */
+  /* ./parser//parser.nit:2663 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2666 */
+  /* ./parser//parser.nit:2664 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2667 */
+  /* ./parser//parser.nit:2665 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2668 */
+  /* ./parser//parser.nit:2666 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2669 */
+  /* ./parser//parser.nit:2667 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2670 */
+  /* ./parser//parser.nit:2668 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2671 */
+  /* ./parser//parser.nit:2669 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2672 */
+  /* ./parser//parser.nit:2670 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2673 */
+  /* ./parser//parser.nit:2671 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2674 */
+  /* ./parser//parser.nit:2672 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2675 */
+  /* ./parser//parser.nit:2673 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2676 */
+  /* ./parser//parser.nit:2674 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2677 */
+  /* ./parser//parser.nit:2675 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2679 */
+  /* ./parser//parser.nit:2677 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2679);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2677);
   }
-  /* ./parser//parser.nit:2681 */
+  /* ./parser//parser.nit:2679 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2681);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2679);
   }
-  /* ./parser//parser.nit:2683 */
+  /* ./parser//parser.nit:2681 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2683);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2681);
   }
-  /* ./parser//parser.nit:2685 */
+  /* ./parser//parser.nit:2683 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2685);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2683);
   }
-  /* ./parser//parser.nit:2687 */
+  /* ./parser//parser.nit:2685 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2687);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2685);
   }
-  /* ./parser//parser.nit:2688 */
+  /* ./parser//parser.nit:2686 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[4]);
   fra.me.REG[10] = fra.me.REG[4];
-  /* ./parser//parser.nit:2690 */
+  /* ./parser//parser.nit:2688 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2690);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2688);
   }
-  /* ./parser//parser.nit:2691 */
+  /* ./parser//parser.nit:2689 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[3]);
   fra.me.REG[11] = fra.me.REG[3];
-  /* ./parser//parser.nit:2692 */
+  /* ./parser//parser.nit:2690 */
   fra.me.REG[11] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[9], fra.me.REG[10], fra.me.REG[11]);
-  /* ./parser//parser.nit:2702 */
+  /* ./parser//parser.nit:2700 */
   fra.me.REG[2] = fra.me.REG[11];
-  /* ./parser//parser.nit:2703 */
+  /* ./parser//parser.nit:2701 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction51____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2703);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2701);
   }
   REGB0 = ATTR_parser___ReduceAction51____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10544,7 +10532,7 @@ void parser___ReduceAction51___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos54]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2706;
+  fra.me.line = 2704;
   fra.me.meth = LOCATE_parser___ReduceAction51___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10552,7 +10540,7 @@ void parser___ReduceAction51___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2706 */
+  /* ./parser//parser.nit:2704 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction51____goto(fra.me.REG[1]) = REGB0;
@@ -10566,7 +10554,7 @@ void parser___ReduceAction52___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2710;
+  fra.me.line = 2708;
   fra.me.meth = LOCATE_parser___ReduceAction52___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -10585,91 +10573,91 @@ void parser___ReduceAction52___action(val_t p0, val_t p1){
   fra.me.REG[12] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2712 */
+  /* ./parser//parser.nit:2710 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2713 */
+  /* ./parser//parser.nit:2711 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2714 */
+  /* ./parser//parser.nit:2712 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2715 */
+  /* ./parser//parser.nit:2713 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2716 */
+  /* ./parser//parser.nit:2714 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2717 */
+  /* ./parser//parser.nit:2715 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2718 */
+  /* ./parser//parser.nit:2716 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2719 */
+  /* ./parser//parser.nit:2717 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2720 */
+  /* ./parser//parser.nit:2718 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2721 */
+  /* ./parser//parser.nit:2719 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2722 */
+  /* ./parser//parser.nit:2720 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2723 */
+  /* ./parser//parser.nit:2721 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2724 */
+  /* ./parser//parser.nit:2722 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2725 */
+  /* ./parser//parser.nit:2723 */
   fra.me.REG[12] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2727 */
+  /* ./parser//parser.nit:2725 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2725);
+  }
+  /* ./parser//parser.nit:2727 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2727);
   }
   /* ./parser//parser.nit:2729 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2729);
   }
   /* ./parser//parser.nit:2731 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2731);
   }
   /* ./parser//parser.nit:2733 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2733);
   }
   /* ./parser//parser.nit:2735 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2735);
-  }
-  /* ./parser//parser.nit:2737 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2737);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2735);
   }
-  /* ./parser//parser.nit:2738 */
+  /* ./parser//parser.nit:2736 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* ./parser//parser.nit:2740 */
+  /* ./parser//parser.nit:2738 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2740);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2738);
   }
-  /* ./parser//parser.nit:2741 */
+  /* ./parser//parser.nit:2739 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[3]);
   fra.me.REG[12] = fra.me.REG[3];
-  /* ./parser//parser.nit:2742 */
+  /* ./parser//parser.nit:2740 */
   fra.me.REG[12] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[10], fra.me.REG[11], fra.me.REG[12]);
-  /* ./parser//parser.nit:2752 */
+  /* ./parser//parser.nit:2750 */
   fra.me.REG[2] = fra.me.REG[12];
-  /* ./parser//parser.nit:2753 */
+  /* ./parser//parser.nit:2751 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction52____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2753);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2751);
   }
   REGB0 = ATTR_parser___ReduceAction52____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10685,7 +10673,7 @@ void parser___ReduceAction52___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos55]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2756;
+  fra.me.line = 2754;
   fra.me.meth = LOCATE_parser___ReduceAction52___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10693,7 +10681,7 @@ void parser___ReduceAction52___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2756 */
+  /* ./parser//parser.nit:2754 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction52____goto(fra.me.REG[1]) = REGB0;
@@ -10707,7 +10695,7 @@ void parser___ReduceAction53___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2760;
+  fra.me.line = 2758;
   fra.me.meth = LOCATE_parser___ReduceAction53___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 13;
@@ -10726,94 +10714,94 @@ void parser___ReduceAction53___action(val_t p0, val_t p1){
   fra.me.REG[12] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2762 */
+  /* ./parser//parser.nit:2760 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2763 */
+  /* ./parser//parser.nit:2761 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2764 */
+  /* ./parser//parser.nit:2762 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2765 */
+  /* ./parser//parser.nit:2763 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2766 */
+  /* ./parser//parser.nit:2764 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2767 */
+  /* ./parser//parser.nit:2765 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2768 */
+  /* ./parser//parser.nit:2766 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2769 */
+  /* ./parser//parser.nit:2767 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2770 */
+  /* ./parser//parser.nit:2768 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2771 */
+  /* ./parser//parser.nit:2769 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2772 */
+  /* ./parser//parser.nit:2770 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2773 */
+  /* ./parser//parser.nit:2771 */
   fra.me.REG[10] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2774 */
+  /* ./parser//parser.nit:2772 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2775 */
+  /* ./parser//parser.nit:2773 */
   fra.me.REG[12] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2777 */
+  /* ./parser//parser.nit:2775 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2777);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2775);
   }
-  /* ./parser//parser.nit:2779 */
+  /* ./parser//parser.nit:2777 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2779);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2777);
   }
-  /* ./parser//parser.nit:2781 */
+  /* ./parser//parser.nit:2779 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2781);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2779);
   }
-  /* ./parser//parser.nit:2783 */
+  /* ./parser//parser.nit:2781 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2783);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2781);
   }
-  /* ./parser//parser.nit:2785 */
+  /* ./parser//parser.nit:2783 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2785);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2783);
   }
-  /* ./parser//parser.nit:2786 */
+  /* ./parser//parser.nit:2784 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[5]);
   fra.me.REG[10] = fra.me.REG[5];
-  /* ./parser//parser.nit:2788 */
+  /* ./parser//parser.nit:2786 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2788);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2786);
   }
-  /* ./parser//parser.nit:2789 */
+  /* ./parser//parser.nit:2787 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[4]);
   fra.me.REG[11] = fra.me.REG[4];
-  /* ./parser//parser.nit:2791 */
+  /* ./parser//parser.nit:2789 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2791);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2789);
   }
-  /* ./parser//parser.nit:2792 */
+  /* ./parser//parser.nit:2790 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[3]);
   fra.me.REG[12] = fra.me.REG[3];
-  /* ./parser//parser.nit:2793 */
+  /* ./parser//parser.nit:2791 */
   fra.me.REG[12] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[10], fra.me.REG[11], fra.me.REG[12]);
-  /* ./parser//parser.nit:2803 */
+  /* ./parser//parser.nit:2801 */
   fra.me.REG[2] = fra.me.REG[12];
-  /* ./parser//parser.nit:2804 */
+  /* ./parser//parser.nit:2802 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction53____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2804);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2802);
   }
   REGB0 = ATTR_parser___ReduceAction53____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10829,7 +10817,7 @@ void parser___ReduceAction53___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos56]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2807;
+  fra.me.line = 2805;
   fra.me.meth = LOCATE_parser___ReduceAction53___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10837,7 +10825,7 @@ void parser___ReduceAction53___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2807 */
+  /* ./parser//parser.nit:2805 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction53____goto(fra.me.REG[1]) = REGB0;
@@ -10851,7 +10839,7 @@ void parser___ReduceAction54___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2811;
+  fra.me.line = 2809;
   fra.me.meth = LOCATE_parser___ReduceAction54___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -10871,102 +10859,102 @@ void parser___ReduceAction54___action(val_t p0, val_t p1){
   fra.me.REG[13] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2813 */
+  /* ./parser//parser.nit:2811 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2814 */
+  /* ./parser//parser.nit:2812 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2815 */
+  /* ./parser//parser.nit:2813 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2816 */
+  /* ./parser//parser.nit:2814 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2817 */
+  /* ./parser//parser.nit:2815 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2818 */
+  /* ./parser//parser.nit:2816 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2819 */
+  /* ./parser//parser.nit:2817 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2820 */
+  /* ./parser//parser.nit:2818 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2821 */
+  /* ./parser//parser.nit:2819 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2822 */
+  /* ./parser//parser.nit:2820 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2823 */
+  /* ./parser//parser.nit:2821 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2824 */
+  /* ./parser//parser.nit:2822 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2825 */
+  /* ./parser//parser.nit:2823 */
   fra.me.REG[11] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2826 */
+  /* ./parser//parser.nit:2824 */
   fra.me.REG[12] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2827 */
+  /* ./parser//parser.nit:2825 */
   fra.me.REG[13] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2829 */
+  /* ./parser//parser.nit:2827 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2827);
+  }
+  /* ./parser//parser.nit:2829 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2829);
   }
   /* ./parser//parser.nit:2831 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2831);
   }
   /* ./parser//parser.nit:2833 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2833);
   }
   /* ./parser//parser.nit:2835 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClasskind, ID_AClasskind)) /*cast nullable AClasskind*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 2835);
   }
   /* ./parser//parser.nit:2837 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2837);
-  }
-  /* ./parser//parser.nit:2839 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2839);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2837);
   }
-  /* ./parser//parser.nit:2840 */
+  /* ./parser//parser.nit:2838 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[11], fra.me.REG[5]);
   fra.me.REG[11] = fra.me.REG[5];
-  /* ./parser//parser.nit:2842 */
+  /* ./parser//parser.nit:2840 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2842);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2840);
   }
-  /* ./parser//parser.nit:2843 */
+  /* ./parser//parser.nit:2841 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[12], fra.me.REG[4]);
   fra.me.REG[12] = fra.me.REG[4];
-  /* ./parser//parser.nit:2845 */
+  /* ./parser//parser.nit:2843 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2845);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2843);
   }
-  /* ./parser//parser.nit:2846 */
+  /* ./parser//parser.nit:2844 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[13], fra.me.REG[3]);
   fra.me.REG[13] = fra.me.REG[3];
-  /* ./parser//parser.nit:2847 */
+  /* ./parser//parser.nit:2845 */
   fra.me.REG[13] = NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[11], fra.me.REG[12], fra.me.REG[13]);
-  /* ./parser//parser.nit:2857 */
+  /* ./parser//parser.nit:2855 */
   fra.me.REG[2] = fra.me.REG[13];
-  /* ./parser//parser.nit:2858 */
+  /* ./parser//parser.nit:2856 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction54____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2858);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2856);
   }
   REGB0 = ATTR_parser___ReduceAction54____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -10982,7 +10970,7 @@ void parser___ReduceAction54___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos57]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2861;
+  fra.me.line = 2859;
   fra.me.meth = LOCATE_parser___ReduceAction54___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10990,7 +10978,7 @@ void parser___ReduceAction54___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2861 */
+  /* ./parser//parser.nit:2859 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction54____goto(fra.me.REG[1]) = REGB0;
@@ -11004,7 +10992,7 @@ void parser___ReduceAction55___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2865;
+  fra.me.line = 2863;
   fra.me.meth = LOCATE_parser___ReduceAction55___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11014,25 +11002,25 @@ void parser___ReduceAction55___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2867 */
+  /* ./parser//parser.nit:2865 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2868 */
+  /* ./parser//parser.nit:2866 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2870 */
+  /* ./parser//parser.nit:2868 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwclass, ID_TKwclass)) /*cast nullable TKwclass*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2870);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2868);
   }
-  /* ./parser//parser.nit:2871 */
+  /* ./parser//parser.nit:2869 */
   fra.me.REG[3] = NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[3]);
-  /* ./parser//parser.nit:2874 */
+  /* ./parser//parser.nit:2872 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2875 */
+  /* ./parser//parser.nit:2873 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction55____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2875);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2873);
   }
   REGB0 = ATTR_parser___ReduceAction55____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11048,7 +11036,7 @@ void parser___ReduceAction55___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos58]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2878;
+  fra.me.line = 2876;
   fra.me.meth = LOCATE_parser___ReduceAction55___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11056,7 +11044,7 @@ void parser___ReduceAction55___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2878 */
+  /* ./parser//parser.nit:2876 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction55____goto(fra.me.REG[1]) = REGB0;
@@ -11070,7 +11058,7 @@ void parser___ReduceAction56___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2882;
+  fra.me.line = 2880;
   fra.me.meth = LOCATE_parser___ReduceAction56___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -11081,33 +11069,33 @@ void parser___ReduceAction56___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2884 */
+  /* ./parser//parser.nit:2882 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2885 */
+  /* ./parser//parser.nit:2883 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2886 */
+  /* ./parser//parser.nit:2884 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2888 */
+  /* ./parser//parser.nit:2886 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwabstract, ID_TKwabstract)) /*cast nullable TKwabstract*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2888);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2886);
   }
-  /* ./parser//parser.nit:2890 */
+  /* ./parser//parser.nit:2888 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwclass, ID_TKwclass)) /*cast nullable TKwclass*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2890);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2888);
   }
-  /* ./parser//parser.nit:2891 */
+  /* ./parser//parser.nit:2889 */
   fra.me.REG[3] = NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:2895 */
+  /* ./parser//parser.nit:2893 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2896 */
+  /* ./parser//parser.nit:2894 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction56____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2896);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2894);
   }
   REGB0 = ATTR_parser___ReduceAction56____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11123,7 +11111,7 @@ void parser___ReduceAction56___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos59]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2899;
+  fra.me.line = 2897;
   fra.me.meth = LOCATE_parser___ReduceAction56___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11131,7 +11119,7 @@ void parser___ReduceAction56___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2899 */
+  /* ./parser//parser.nit:2897 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction56____goto(fra.me.REG[1]) = REGB0;
@@ -11145,7 +11133,7 @@ void parser___ReduceAction57___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2903;
+  fra.me.line = 2901;
   fra.me.meth = LOCATE_parser___ReduceAction57___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11155,25 +11143,25 @@ void parser___ReduceAction57___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2905 */
+  /* ./parser//parser.nit:2903 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2906 */
+  /* ./parser//parser.nit:2904 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2908 */
+  /* ./parser//parser.nit:2906 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwinterface, ID_TKwinterface)) /*cast nullable TKwinterface*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2908);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2906);
   }
-  /* ./parser//parser.nit:2909 */
+  /* ./parser//parser.nit:2907 */
   fra.me.REG[3] = NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[3]);
-  /* ./parser//parser.nit:2912 */
+  /* ./parser//parser.nit:2910 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2913 */
+  /* ./parser//parser.nit:2911 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction57____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2913);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2911);
   }
   REGB0 = ATTR_parser___ReduceAction57____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11189,7 +11177,7 @@ void parser___ReduceAction57___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos60]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2916;
+  fra.me.line = 2914;
   fra.me.meth = LOCATE_parser___ReduceAction57___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11197,7 +11185,7 @@ void parser___ReduceAction57___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2916 */
+  /* ./parser//parser.nit:2914 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction57____goto(fra.me.REG[1]) = REGB0;
@@ -11211,7 +11199,7 @@ void parser___ReduceAction58___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2920;
+  fra.me.line = 2918;
   fra.me.meth = LOCATE_parser___ReduceAction58___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11221,25 +11209,25 @@ void parser___ReduceAction58___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2922 */
+  /* ./parser//parser.nit:2920 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2923 */
+  /* ./parser//parser.nit:2921 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2925 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwuniversal, ID_TKwuniversal)) /*cast nullable TKwuniversal*/;
+  /* ./parser//parser.nit:2923 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwenum, ID_TKwenum)) /*cast nullable TKwenum*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2925);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2923);
   }
-  /* ./parser//parser.nit:2926 */
-  fra.me.REG[3] = NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind(fra.me.REG[3]);
-  /* ./parser//parser.nit:2929 */
+  /* ./parser//parser.nit:2924 */
+  fra.me.REG[3] = NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[3]);
+  /* ./parser//parser.nit:2927 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2930 */
+  /* ./parser//parser.nit:2928 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction58____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2930);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2928);
   }
   REGB0 = ATTR_parser___ReduceAction58____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11255,7 +11243,7 @@ void parser___ReduceAction58___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos61]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2933;
+  fra.me.line = 2931;
   fra.me.meth = LOCATE_parser___ReduceAction58___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11263,7 +11251,7 @@ void parser___ReduceAction58___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2933 */
+  /* ./parser//parser.nit:2931 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction58____goto(fra.me.REG[1]) = REGB0;
@@ -11278,7 +11266,7 @@ void parser___ReduceAction59___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2937;
+  fra.me.line = 2935;
   fra.me.meth = LOCATE_parser___ReduceAction59___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -11289,21 +11277,21 @@ void parser___ReduceAction59___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2939 */
+  /* ./parser//parser.nit:2937 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2940 */
+  /* ./parser//parser.nit:2938 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2941 */
+  /* ./parser//parser.nit:2939 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2942 */
+  /* ./parser//parser.nit:2940 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2943 */
+  /* ./parser//parser.nit:2941 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2944 */
+  /* ./parser//parser.nit:2942 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2945 */
+  /* ./parser//parser.nit:2943 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2947 */
+  /* ./parser//parser.nit:2945 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11318,16 +11306,16 @@ void parser___ReduceAction59___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:2948 */
+    /* ./parser//parser.nit:2946 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:2950 */
+  /* ./parser//parser.nit:2948 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:2951 */
+  /* ./parser//parser.nit:2949 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction59____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2951);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2949);
   }
   REGB0 = ATTR_parser___ReduceAction59____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11343,7 +11331,7 @@ void parser___ReduceAction59___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos62]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2954;
+  fra.me.line = 2952;
   fra.me.meth = LOCATE_parser___ReduceAction59___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11351,7 +11339,7 @@ void parser___ReduceAction59___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2954 */
+  /* ./parser//parser.nit:2952 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction59____goto(fra.me.REG[1]) = REGB0;
@@ -11366,7 +11354,7 @@ void parser___ReduceAction60___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2958;
+  fra.me.line = 2956;
   fra.me.meth = LOCATE_parser___ReduceAction60___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -11378,29 +11366,29 @@ void parser___ReduceAction60___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2960 */
+  /* ./parser//parser.nit:2958 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2961 */
+  /* ./parser//parser.nit:2959 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2962 */
+  /* ./parser//parser.nit:2960 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2963 */
+  /* ./parser//parser.nit:2961 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2964 */
+  /* ./parser//parser.nit:2962 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2965 */
+  /* ./parser//parser.nit:2963 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2966 */
+  /* ./parser//parser.nit:2964 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2967 */
+  /* ./parser//parser.nit:2965 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:2970 */
+  /* ./parser//parser.nit:2968 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 2970);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 2968);
   }
-  /* ./parser//parser.nit:2971 */
+  /* ./parser//parser.nit:2969 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -11415,19 +11403,19 @@ void parser___ReduceAction60___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:2972 */
+    /* ./parser//parser.nit:2970 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:2974 */
+  /* ./parser//parser.nit:2972 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:2975 */
+  /* ./parser//parser.nit:2973 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:2976 */
+  /* ./parser//parser.nit:2974 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction60____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2976);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2974);
   }
   REGB0 = ATTR_parser___ReduceAction60____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11443,7 +11431,7 @@ void parser___ReduceAction60___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos63]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2979;
+  fra.me.line = 2977;
   fra.me.meth = LOCATE_parser___ReduceAction60___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11451,7 +11439,7 @@ void parser___ReduceAction60___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2979 */
+  /* ./parser//parser.nit:2977 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction60____goto(fra.me.REG[1]) = REGB0;
@@ -11465,7 +11453,7 @@ void parser___ReduceAction61___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2983;
+  fra.me.line = 2981;
   fra.me.meth = LOCATE_parser___ReduceAction61___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -11476,21 +11464,21 @@ void parser___ReduceAction61___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:2985 */
+  /* ./parser//parser.nit:2983 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:2986 */
+  /* ./parser//parser.nit:2984 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2987 */
+  /* ./parser//parser.nit:2985 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2988 */
+  /* ./parser//parser.nit:2986 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:2990 */
+  /* ./parser//parser.nit:2988 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:2991 */
+  /* ./parser//parser.nit:2989 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction61____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2991);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 2989);
   }
   REGB0 = ATTR_parser___ReduceAction61____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11506,7 +11494,7 @@ void parser___ReduceAction61___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos64]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2994;
+  fra.me.line = 2992;
   fra.me.meth = LOCATE_parser___ReduceAction61___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11514,7 +11502,7 @@ void parser___ReduceAction61___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:2994 */
+  /* ./parser//parser.nit:2992 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction61____goto(fra.me.REG[1]) = REGB0;
@@ -11528,7 +11516,7 @@ void parser___ReduceAction62___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 2998;
+  fra.me.line = 2996;
   fra.me.meth = LOCATE_parser___ReduceAction62___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11538,25 +11526,25 @@ void parser___ReduceAction62___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3000 */
+  /* ./parser//parser.nit:2998 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3001 */
+  /* ./parser//parser.nit:2999 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3003 */
+  /* ./parser//parser.nit:3001 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3003);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3001);
   }
-  /* ./parser//parser.nit:3004 */
+  /* ./parser//parser.nit:3002 */
   fra.me.REG[3] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:3008 */
+  /* ./parser//parser.nit:3006 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3009 */
+  /* ./parser//parser.nit:3007 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction62____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3009);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3007);
   }
   REGB0 = ATTR_parser___ReduceAction62____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11572,7 +11560,7 @@ void parser___ReduceAction62___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos65]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3012;
+  fra.me.line = 3010;
   fra.me.meth = LOCATE_parser___ReduceAction62___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11580,7 +11568,7 @@ void parser___ReduceAction62___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3012 */
+  /* ./parser//parser.nit:3010 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction62____goto(fra.me.REG[1]) = REGB0;
@@ -11594,7 +11582,7 @@ void parser___ReduceAction63___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3016;
+  fra.me.line = 3014;
   fra.me.meth = LOCATE_parser___ReduceAction63___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -11605,33 +11593,33 @@ void parser___ReduceAction63___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3018 */
+  /* ./parser//parser.nit:3016 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3019 */
+  /* ./parser//parser.nit:3017 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3020 */
+  /* ./parser//parser.nit:3018 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3022 */
+  /* ./parser//parser.nit:3020 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3022);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3020);
   }
-  /* ./parser//parser.nit:3024 */
+  /* ./parser//parser.nit:3022 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3024);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3022);
   }
-  /* ./parser//parser.nit:3025 */
+  /* ./parser//parser.nit:3023 */
   fra.me.REG[3] = NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3029 */
+  /* ./parser//parser.nit:3027 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3030 */
+  /* ./parser//parser.nit:3028 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction63____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3030);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3028);
   }
   REGB0 = ATTR_parser___ReduceAction63____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11647,7 +11635,7 @@ void parser___ReduceAction63___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos66]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3033;
+  fra.me.line = 3031;
   fra.me.meth = LOCATE_parser___ReduceAction63___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11655,7 +11643,7 @@ void parser___ReduceAction63___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3033 */
+  /* ./parser//parser.nit:3031 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction63____goto(fra.me.REG[1]) = REGB0;
@@ -11669,7 +11657,7 @@ void parser___ReduceAction64___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3037;
+  fra.me.line = 3035;
   fra.me.meth = LOCATE_parser___ReduceAction64___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -11681,37 +11669,37 @@ void parser___ReduceAction64___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3039 */
+  /* ./parser//parser.nit:3037 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3040 */
+  /* ./parser//parser.nit:3038 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3041 */
+  /* ./parser//parser.nit:3039 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3042 */
+  /* ./parser//parser.nit:3040 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3043 */
+  /* ./parser//parser.nit:3041 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3045 */
+  /* ./parser//parser.nit:3043 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwspecial, ID_TKwspecial)) /*cast nullable TKwspecial*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3045);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3043);
   }
-  /* ./parser//parser.nit:3047 */
+  /* ./parser//parser.nit:3045 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3047);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3045);
   }
-  /* ./parser//parser.nit:3048 */
+  /* ./parser//parser.nit:3046 */
   fra.me.REG[3] = NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:3053 */
+  /* ./parser//parser.nit:3051 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3054 */
+  /* ./parser//parser.nit:3052 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction64____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3054);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3052);
   }
   REGB0 = ATTR_parser___ReduceAction64____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11727,7 +11715,7 @@ void parser___ReduceAction64___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos67]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3057;
+  fra.me.line = 3055;
   fra.me.meth = LOCATE_parser___ReduceAction64___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11735,7 +11723,7 @@ void parser___ReduceAction64___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3057 */
+  /* ./parser//parser.nit:3055 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction64____goto(fra.me.REG[1]) = REGB0;
@@ -11749,7 +11737,7 @@ void parser___ReduceAction65___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3061;
+  fra.me.line = 3059;
   fra.me.meth = LOCATE_parser___ReduceAction65___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -11761,37 +11749,37 @@ void parser___ReduceAction65___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3063 */
+  /* ./parser//parser.nit:3061 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3064 */
+  /* ./parser//parser.nit:3062 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3065 */
+  /* ./parser//parser.nit:3063 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3066 */
+  /* ./parser//parser.nit:3064 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3067 */
+  /* ./parser//parser.nit:3065 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3069 */
+  /* ./parser//parser.nit:3067 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwsuper, ID_TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3069);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3067);
   }
-  /* ./parser//parser.nit:3071 */
+  /* ./parser//parser.nit:3069 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3071);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3069);
   }
-  /* ./parser//parser.nit:3072 */
+  /* ./parser//parser.nit:3070 */
   fra.me.REG[3] = NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3077 */
+  /* ./parser//parser.nit:3075 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3078 */
+  /* ./parser//parser.nit:3076 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction65____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3078);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3076);
   }
   REGB0 = ATTR_parser___ReduceAction65____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11807,7 +11795,7 @@ void parser___ReduceAction65___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos68]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3081;
+  fra.me.line = 3079;
   fra.me.meth = LOCATE_parser___ReduceAction65___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11815,7 +11803,7 @@ void parser___ReduceAction65___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3081 */
+  /* ./parser//parser.nit:3079 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction65____goto(fra.me.REG[1]) = REGB0;
@@ -11829,7 +11817,7 @@ void parser___ReduceAction66___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3085;
+  fra.me.line = 3083;
   fra.me.meth = LOCATE_parser___ReduceAction66___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -11839,19 +11827,19 @@ void parser___ReduceAction66___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3087 */
+  /* ./parser//parser.nit:3085 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3088 */
+  /* ./parser//parser.nit:3086 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3089 */
+  /* ./parser//parser.nit:3087 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3091 */
+  /* ./parser//parser.nit:3089 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3092 */
+  /* ./parser//parser.nit:3090 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction66____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3092);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3090);
   }
   REGB0 = ATTR_parser___ReduceAction66____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11867,7 +11855,7 @@ void parser___ReduceAction66___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos69]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3095;
+  fra.me.line = 3093;
   fra.me.meth = LOCATE_parser___ReduceAction66___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11875,7 +11863,7 @@ void parser___ReduceAction66___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3095 */
+  /* ./parser//parser.nit:3093 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction66____goto(fra.me.REG[1]) = REGB0;
@@ -11889,7 +11877,7 @@ void parser___ReduceAction67___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3099;
+  fra.me.line = 3097;
   fra.me.meth = LOCATE_parser___ReduceAction67___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -11904,67 +11892,67 @@ void parser___ReduceAction67___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3101 */
+  /* ./parser//parser.nit:3099 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3102 */
+  /* ./parser//parser.nit:3100 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3103 */
+  /* ./parser//parser.nit:3101 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3104 */
+  /* ./parser//parser.nit:3102 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3105 */
+  /* ./parser//parser.nit:3103 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3106 */
+  /* ./parser//parser.nit:3104 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3107 */
+  /* ./parser//parser.nit:3105 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3108 */
+  /* ./parser//parser.nit:3106 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3110 */
+  /* ./parser//parser.nit:3108 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3108);
+  }
+  /* ./parser//parser.nit:3110 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3110);
   }
   /* ./parser//parser.nit:3112 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3112);
   }
   /* ./parser//parser.nit:3114 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3114);
   }
   /* ./parser//parser.nit:3116 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3116);
   }
   /* ./parser//parser.nit:3118 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3118);
-  }
-  /* ./parser//parser.nit:3120 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3120);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3118);
   }
-  /* ./parser//parser.nit:3121 */
+  /* ./parser//parser.nit:3119 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3130 */
+  /* ./parser//parser.nit:3128 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3131 */
+  /* ./parser//parser.nit:3129 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction67____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3131);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3129);
   }
   REGB0 = ATTR_parser___ReduceAction67____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -11980,7 +11968,7 @@ void parser___ReduceAction67___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos70]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3134;
+  fra.me.line = 3132;
   fra.me.meth = LOCATE_parser___ReduceAction67___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -11988,7 +11976,7 @@ void parser___ReduceAction67___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3134 */
+  /* ./parser//parser.nit:3132 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction67____goto(fra.me.REG[1]) = REGB0;
@@ -12002,7 +11990,7 @@ void parser___ReduceAction68___action(val_t p0, val_t p1){
   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.line = 3136;
   fra.me.meth = LOCATE_parser___ReduceAction68___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12018,75 +12006,75 @@ void parser___ReduceAction68___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3140 */
+  /* ./parser//parser.nit:3138 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3141 */
+  /* ./parser//parser.nit:3139 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3142 */
+  /* ./parser//parser.nit:3140 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3143 */
+  /* ./parser//parser.nit:3141 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3144 */
+  /* ./parser//parser.nit:3142 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3145 */
+  /* ./parser//parser.nit:3143 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3146 */
+  /* ./parser//parser.nit:3144 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3147 */
+  /* ./parser//parser.nit:3145 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3148 */
+  /* ./parser//parser.nit:3146 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3150 */
+  /* ./parser//parser.nit:3148 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3148);
+  }
+  /* ./parser//parser.nit:3150 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3150);
   }
   /* ./parser//parser.nit:3152 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3152);
   }
   /* ./parser//parser.nit:3154 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3154);
   }
   /* ./parser//parser.nit:3156 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3156);
   }
   /* ./parser//parser.nit:3158 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3158);
   }
   /* ./parser//parser.nit:3160 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3160);
-  }
-  /* ./parser//parser.nit:3162 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3162);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3160);
   }
-  /* ./parser//parser.nit:3163 */
+  /* ./parser//parser.nit:3161 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3172 */
+  /* ./parser//parser.nit:3170 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3173 */
+  /* ./parser//parser.nit:3171 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction68____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3173);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3171);
   }
   REGB0 = ATTR_parser___ReduceAction68____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12102,7 +12090,7 @@ void parser___ReduceAction68___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos71]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3176;
+  fra.me.line = 3174;
   fra.me.meth = LOCATE_parser___ReduceAction68___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12110,7 +12098,7 @@ void parser___ReduceAction68___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3176 */
+  /* ./parser//parser.nit:3174 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction68____goto(fra.me.REG[1]) = REGB0;
@@ -12124,7 +12112,7 @@ void parser___ReduceAction69___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3180;
+  fra.me.line = 3178;
   fra.me.meth = LOCATE_parser___ReduceAction69___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12139,69 +12127,69 @@ void parser___ReduceAction69___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3182 */
+  /* ./parser//parser.nit:3180 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3183 */
+  /* ./parser//parser.nit:3181 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3184 */
+  /* ./parser//parser.nit:3182 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3185 */
+  /* ./parser//parser.nit:3183 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3186 */
+  /* ./parser//parser.nit:3184 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3187 */
+  /* ./parser//parser.nit:3185 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3188 */
+  /* ./parser//parser.nit:3186 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3189 */
+  /* ./parser//parser.nit:3187 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3190 */
+  /* ./parser//parser.nit:3188 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3192 */
+  /* ./parser//parser.nit:3190 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3190);
+  }
+  /* ./parser//parser.nit:3192 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3192);
   }
   /* ./parser//parser.nit:3194 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3194);
   }
   /* ./parser//parser.nit:3196 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3196);
   }
   /* ./parser//parser.nit:3198 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3198);
   }
   /* ./parser//parser.nit:3200 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3200);
-  }
-  /* ./parser//parser.nit:3202 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3202);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3200);
   }
-  /* ./parser//parser.nit:3203 */
+  /* ./parser//parser.nit:3201 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3212 */
+  /* ./parser//parser.nit:3210 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3213 */
+  /* ./parser//parser.nit:3211 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction69____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3213);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3211);
   }
   REGB0 = ATTR_parser___ReduceAction69____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12217,7 +12205,7 @@ void parser___ReduceAction69___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos72]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3216;
+  fra.me.line = 3214;
   fra.me.meth = LOCATE_parser___ReduceAction69___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12225,7 +12213,7 @@ void parser___ReduceAction69___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3216 */
+  /* ./parser//parser.nit:3214 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction69____goto(fra.me.REG[1]) = REGB0;
@@ -12239,7 +12227,7 @@ void parser___ReduceAction70___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3220;
+  fra.me.line = 3218;
   fra.me.meth = LOCATE_parser___ReduceAction70___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12255,77 +12243,77 @@ void parser___ReduceAction70___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3222 */
+  /* ./parser//parser.nit:3220 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3223 */
+  /* ./parser//parser.nit:3221 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3224 */
+  /* ./parser//parser.nit:3222 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3225 */
+  /* ./parser//parser.nit:3223 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3226 */
+  /* ./parser//parser.nit:3224 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3227 */
+  /* ./parser//parser.nit:3225 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3228 */
+  /* ./parser//parser.nit:3226 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3229 */
+  /* ./parser//parser.nit:3227 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3230 */
+  /* ./parser//parser.nit:3228 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3231 */
+  /* ./parser//parser.nit:3229 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3233 */
+  /* ./parser//parser.nit:3231 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3231);
+  }
+  /* ./parser//parser.nit:3233 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3233);
   }
   /* ./parser//parser.nit:3235 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3235);
   }
   /* ./parser//parser.nit:3237 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3237);
   }
   /* ./parser//parser.nit:3239 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3239);
   }
   /* ./parser//parser.nit:3241 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3241);
   }
   /* ./parser//parser.nit:3243 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3243);
-  }
-  /* ./parser//parser.nit:3245 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3245);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3243);
   }
-  /* ./parser//parser.nit:3246 */
+  /* ./parser//parser.nit:3244 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3255 */
+  /* ./parser//parser.nit:3253 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3256 */
+  /* ./parser//parser.nit:3254 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction70____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3256);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3254);
   }
   REGB0 = ATTR_parser___ReduceAction70____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12341,7 +12329,7 @@ void parser___ReduceAction70___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos73]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3259;
+  fra.me.line = 3257;
   fra.me.meth = LOCATE_parser___ReduceAction70___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12349,7 +12337,7 @@ void parser___ReduceAction70___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3259 */
+  /* ./parser//parser.nit:3257 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction70____goto(fra.me.REG[1]) = REGB0;
@@ -12363,7 +12351,7 @@ void parser___ReduceAction71___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3263;
+  fra.me.line = 3261;
   fra.me.meth = LOCATE_parser___ReduceAction71___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12378,69 +12366,69 @@ void parser___ReduceAction71___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3265 */
+  /* ./parser//parser.nit:3263 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3266 */
+  /* ./parser//parser.nit:3264 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3267 */
+  /* ./parser//parser.nit:3265 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3268 */
+  /* ./parser//parser.nit:3266 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3269 */
+  /* ./parser//parser.nit:3267 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3270 */
+  /* ./parser//parser.nit:3268 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3271 */
+  /* ./parser//parser.nit:3269 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3272 */
+  /* ./parser//parser.nit:3270 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3273 */
+  /* ./parser//parser.nit:3271 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3275 */
+  /* ./parser//parser.nit:3273 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3273);
+  }
+  /* ./parser//parser.nit:3275 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3275);
   }
   /* ./parser//parser.nit:3277 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3277);
   }
   /* ./parser//parser.nit:3279 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3279);
   }
   /* ./parser//parser.nit:3281 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3281);
   }
   /* ./parser//parser.nit:3283 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3283);
-  }
-  /* ./parser//parser.nit:3285 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3285);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3283);
   }
-  /* ./parser//parser.nit:3286 */
+  /* ./parser//parser.nit:3284 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3295 */
+  /* ./parser//parser.nit:3293 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3296 */
+  /* ./parser//parser.nit:3294 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction71____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3296);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3294);
   }
   REGB0 = ATTR_parser___ReduceAction71____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12456,7 +12444,7 @@ void parser___ReduceAction71___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos74]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3299;
+  fra.me.line = 3297;
   fra.me.meth = LOCATE_parser___ReduceAction71___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12464,7 +12452,7 @@ void parser___ReduceAction71___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3299 */
+  /* ./parser//parser.nit:3297 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction71____goto(fra.me.REG[1]) = REGB0;
@@ -12478,7 +12466,7 @@ void parser___ReduceAction72___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3303;
+  fra.me.line = 3301;
   fra.me.meth = LOCATE_parser___ReduceAction72___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -12494,77 +12482,77 @@ void parser___ReduceAction72___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3305 */
+  /* ./parser//parser.nit:3303 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3306 */
+  /* ./parser//parser.nit:3304 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3307 */
+  /* ./parser//parser.nit:3305 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3308 */
+  /* ./parser//parser.nit:3306 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3309 */
+  /* ./parser//parser.nit:3307 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3310 */
+  /* ./parser//parser.nit:3308 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3311 */
+  /* ./parser//parser.nit:3309 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3312 */
+  /* ./parser//parser.nit:3310 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3313 */
+  /* ./parser//parser.nit:3311 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3314 */
+  /* ./parser//parser.nit:3312 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3316 */
+  /* ./parser//parser.nit:3314 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3314);
+  }
+  /* ./parser//parser.nit:3316 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3316);
   }
   /* ./parser//parser.nit:3318 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3318);
   }
   /* ./parser//parser.nit:3320 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3320);
   }
   /* ./parser//parser.nit:3322 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3322);
   }
   /* ./parser//parser.nit:3324 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3324);
   }
   /* ./parser//parser.nit:3326 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3326);
-  }
-  /* ./parser//parser.nit:3328 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3328);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3326);
   }
-  /* ./parser//parser.nit:3329 */
+  /* ./parser//parser.nit:3327 */
   fra.me.REG[3] = NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3338 */
+  /* ./parser//parser.nit:3336 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3339 */
+  /* ./parser//parser.nit:3337 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction72____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3339);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3337);
   }
   REGB0 = ATTR_parser___ReduceAction72____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12580,7 +12568,7 @@ void parser___ReduceAction72___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos75]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3342;
+  fra.me.line = 3340;
   fra.me.meth = LOCATE_parser___ReduceAction72___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12588,7 +12576,7 @@ void parser___ReduceAction72___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3342 */
+  /* ./parser//parser.nit:3340 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction72____goto(fra.me.REG[1]) = REGB0;
@@ -12602,7 +12590,7 @@ void parser___ReduceAction73___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3346;
+  fra.me.line = 3344;
   fra.me.meth = LOCATE_parser___ReduceAction73___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -12616,61 +12604,61 @@ void parser___ReduceAction73___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3348 */
+  /* ./parser//parser.nit:3346 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3349 */
+  /* ./parser//parser.nit:3347 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3350 */
+  /* ./parser//parser.nit:3348 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3351 */
+  /* ./parser//parser.nit:3349 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3352 */
+  /* ./parser//parser.nit:3350 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3353 */
+  /* ./parser//parser.nit:3351 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3354 */
+  /* ./parser//parser.nit:3352 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3355 */
+  /* ./parser//parser.nit:3353 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3357 */
+  /* ./parser//parser.nit:3355 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3357);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3355);
   }
-  /* ./parser//parser.nit:3359 */
+  /* ./parser//parser.nit:3357 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3359);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3357);
   }
-  /* ./parser//parser.nit:3361 */
+  /* ./parser//parser.nit:3359 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3361);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3359);
   }
-  /* ./parser//parser.nit:3363 */
+  /* ./parser//parser.nit:3361 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3363);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3361);
   }
-  /* ./parser//parser.nit:3365 */
+  /* ./parser//parser.nit:3363 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3365);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3363);
   }
-  /* ./parser//parser.nit:3366 */
+  /* ./parser//parser.nit:3364 */
   fra.me.REG[3] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3374 */
+  /* ./parser//parser.nit:3372 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3375 */
+  /* ./parser//parser.nit:3373 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction73____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3375);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3373);
   }
   REGB0 = ATTR_parser___ReduceAction73____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12686,7 +12674,7 @@ void parser___ReduceAction73___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos76]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3378;
+  fra.me.line = 3376;
   fra.me.meth = LOCATE_parser___ReduceAction73___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12694,7 +12682,7 @@ void parser___ReduceAction73___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3378 */
+  /* ./parser//parser.nit:3376 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction73____goto(fra.me.REG[1]) = REGB0;
@@ -12708,7 +12696,7 @@ void parser___ReduceAction74___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3382;
+  fra.me.line = 3380;
   fra.me.meth = LOCATE_parser___ReduceAction74___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12723,69 +12711,69 @@ void parser___ReduceAction74___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3384 */
+  /* ./parser//parser.nit:3382 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3385 */
+  /* ./parser//parser.nit:3383 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3386 */
+  /* ./parser//parser.nit:3384 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3387 */
+  /* ./parser//parser.nit:3385 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3388 */
+  /* ./parser//parser.nit:3386 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3389 */
+  /* ./parser//parser.nit:3387 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3390 */
+  /* ./parser//parser.nit:3388 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3391 */
+  /* ./parser//parser.nit:3389 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3392 */
+  /* ./parser//parser.nit:3390 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3394 */
+  /* ./parser//parser.nit:3392 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3392);
+  }
+  /* ./parser//parser.nit:3394 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3394);
   }
   /* ./parser//parser.nit:3396 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3396);
   }
   /* ./parser//parser.nit:3398 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3398);
   }
   /* ./parser//parser.nit:3400 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3400);
   }
   /* ./parser//parser.nit:3402 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3402);
-  }
-  /* ./parser//parser.nit:3404 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3404);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3402);
   }
-  /* ./parser//parser.nit:3405 */
+  /* ./parser//parser.nit:3403 */
   fra.me.REG[3] = NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3413 */
+  /* ./parser//parser.nit:3411 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3414 */
+  /* ./parser//parser.nit:3412 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction74____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3414);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3412);
   }
   REGB0 = ATTR_parser___ReduceAction74____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12801,7 +12789,7 @@ void parser___ReduceAction74___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos77]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3417;
+  fra.me.line = 3415;
   fra.me.meth = LOCATE_parser___ReduceAction74___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12809,7 +12797,7 @@ void parser___ReduceAction74___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3417 */
+  /* ./parser//parser.nit:3415 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction74____goto(fra.me.REG[1]) = REGB0;
@@ -12823,7 +12811,7 @@ void parser___ReduceAction75___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3421;
+  fra.me.line = 3419;
   fra.me.meth = LOCATE_parser___ReduceAction75___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -12837,61 +12825,61 @@ void parser___ReduceAction75___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3423 */
+  /* ./parser//parser.nit:3421 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3424 */
+  /* ./parser//parser.nit:3422 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3425 */
+  /* ./parser//parser.nit:3423 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3426 */
+  /* ./parser//parser.nit:3424 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3427 */
+  /* ./parser//parser.nit:3425 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3428 */
+  /* ./parser//parser.nit:3426 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3429 */
+  /* ./parser//parser.nit:3427 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3430 */
+  /* ./parser//parser.nit:3428 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3432 */
+  /* ./parser//parser.nit:3430 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3432);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3430);
   }
-  /* ./parser//parser.nit:3434 */
+  /* ./parser//parser.nit:3432 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3434);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3432);
   }
-  /* ./parser//parser.nit:3436 */
+  /* ./parser//parser.nit:3434 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3436);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3434);
   }
-  /* ./parser//parser.nit:3438 */
+  /* ./parser//parser.nit:3436 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3438);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3436);
   }
-  /* ./parser//parser.nit:3440 */
+  /* ./parser//parser.nit:3438 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3440);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3438);
   }
-  /* ./parser//parser.nit:3441 */
+  /* ./parser//parser.nit:3439 */
   fra.me.REG[3] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3449 */
+  /* ./parser//parser.nit:3447 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3450 */
+  /* ./parser//parser.nit:3448 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction75____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3450);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3448);
   }
   REGB0 = ATTR_parser___ReduceAction75____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -12907,7 +12895,7 @@ void parser___ReduceAction75___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos78]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3453;
+  fra.me.line = 3451;
   fra.me.meth = LOCATE_parser___ReduceAction75___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -12915,7 +12903,7 @@ void parser___ReduceAction75___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3453 */
+  /* ./parser//parser.nit:3451 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction75____goto(fra.me.REG[1]) = REGB0;
@@ -12929,7 +12917,7 @@ void parser___ReduceAction76___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3457;
+  fra.me.line = 3455;
   fra.me.meth = LOCATE_parser___ReduceAction76___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -12944,69 +12932,69 @@ void parser___ReduceAction76___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3459 */
+  /* ./parser//parser.nit:3457 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3460 */
+  /* ./parser//parser.nit:3458 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3461 */
+  /* ./parser//parser.nit:3459 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3462 */
+  /* ./parser//parser.nit:3460 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3463 */
+  /* ./parser//parser.nit:3461 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3464 */
+  /* ./parser//parser.nit:3462 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3465 */
+  /* ./parser//parser.nit:3463 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3466 */
+  /* ./parser//parser.nit:3464 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3467 */
+  /* ./parser//parser.nit:3465 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3469 */
+  /* ./parser//parser.nit:3467 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3467);
+  }
+  /* ./parser//parser.nit:3469 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3469);
   }
   /* ./parser//parser.nit:3471 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3471);
   }
   /* ./parser//parser.nit:3473 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3473);
   }
   /* ./parser//parser.nit:3475 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3475);
   }
   /* ./parser//parser.nit:3477 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3477);
-  }
-  /* ./parser//parser.nit:3479 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3479);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3477);
   }
-  /* ./parser//parser.nit:3480 */
+  /* ./parser//parser.nit:3478 */
   fra.me.REG[3] = NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3488 */
+  /* ./parser//parser.nit:3486 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3489 */
+  /* ./parser//parser.nit:3487 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction76____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3489);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3487);
   }
   REGB0 = ATTR_parser___ReduceAction76____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13022,7 +13010,7 @@ void parser___ReduceAction76___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos79]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3492;
+  fra.me.line = 3490;
   fra.me.meth = LOCATE_parser___ReduceAction76___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13030,7 +13018,7 @@ void parser___ReduceAction76___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3492 */
+  /* ./parser//parser.nit:3490 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction76____goto(fra.me.REG[1]) = REGB0;
@@ -13044,7 +13032,7 @@ void parser___ReduceAction77___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3496;
+  fra.me.line = 3494;
   fra.me.meth = LOCATE_parser___ReduceAction77___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -13058,61 +13046,61 @@ void parser___ReduceAction77___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3498 */
+  /* ./parser//parser.nit:3496 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3499 */
+  /* ./parser//parser.nit:3497 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3500 */
+  /* ./parser//parser.nit:3498 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3501 */
+  /* ./parser//parser.nit:3499 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3502 */
+  /* ./parser//parser.nit:3500 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3503 */
+  /* ./parser//parser.nit:3501 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3504 */
+  /* ./parser//parser.nit:3502 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3505 */
+  /* ./parser//parser.nit:3503 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3507 */
+  /* ./parser//parser.nit:3505 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3507);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3505);
   }
-  /* ./parser//parser.nit:3509 */
+  /* ./parser//parser.nit:3507 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3509);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3507);
   }
-  /* ./parser//parser.nit:3511 */
+  /* ./parser//parser.nit:3509 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3511);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3509);
   }
-  /* ./parser//parser.nit:3513 */
+  /* ./parser//parser.nit:3511 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3513);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3511);
   }
-  /* ./parser//parser.nit:3515 */
+  /* ./parser//parser.nit:3513 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3515);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3513);
   }
-  /* ./parser//parser.nit:3516 */
+  /* ./parser//parser.nit:3514 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:3525 */
+  /* ./parser//parser.nit:3523 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3526 */
+  /* ./parser//parser.nit:3524 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction77____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3526);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3524);
   }
   REGB0 = ATTR_parser___ReduceAction77____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13128,7 +13116,7 @@ void parser___ReduceAction77___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos80]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3529;
+  fra.me.line = 3527;
   fra.me.meth = LOCATE_parser___ReduceAction77___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13136,7 +13124,7 @@ void parser___ReduceAction77___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3529 */
+  /* ./parser//parser.nit:3527 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction77____goto(fra.me.REG[1]) = REGB0;
@@ -13150,7 +13138,7 @@ void parser___ReduceAction78___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3533;
+  fra.me.line = 3531;
   fra.me.meth = LOCATE_parser___ReduceAction78___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -13165,69 +13153,69 @@ void parser___ReduceAction78___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3535 */
+  /* ./parser//parser.nit:3533 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3536 */
+  /* ./parser//parser.nit:3534 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3537 */
+  /* ./parser//parser.nit:3535 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3538 */
+  /* ./parser//parser.nit:3536 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3539 */
+  /* ./parser//parser.nit:3537 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3540 */
+  /* ./parser//parser.nit:3538 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3541 */
+  /* ./parser//parser.nit:3539 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3542 */
+  /* ./parser//parser.nit:3540 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3543 */
+  /* ./parser//parser.nit:3541 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3545 */
+  /* ./parser//parser.nit:3543 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3543);
+  }
+  /* ./parser//parser.nit:3545 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3545);
   }
   /* ./parser//parser.nit:3547 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3547);
   }
   /* ./parser//parser.nit:3549 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3549);
   }
   /* ./parser//parser.nit:3551 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3551);
   }
   /* ./parser//parser.nit:3553 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3553);
-  }
-  /* ./parser//parser.nit:3555 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3555);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3553);
   }
-  /* ./parser//parser.nit:3556 */
+  /* ./parser//parser.nit:3554 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:3565 */
+  /* ./parser//parser.nit:3563 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3566 */
+  /* ./parser//parser.nit:3564 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction78____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3566);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3564);
   }
   REGB0 = ATTR_parser___ReduceAction78____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13243,7 +13231,7 @@ void parser___ReduceAction78___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos81]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3569;
+  fra.me.line = 3567;
   fra.me.meth = LOCATE_parser___ReduceAction78___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13251,7 +13239,7 @@ void parser___ReduceAction78___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3569 */
+  /* ./parser//parser.nit:3567 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction78____goto(fra.me.REG[1]) = REGB0;
@@ -13265,7 +13253,7 @@ void parser___ReduceAction79___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3573;
+  fra.me.line = 3571;
   fra.me.meth = LOCATE_parser___ReduceAction79___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -13280,69 +13268,69 @@ void parser___ReduceAction79___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3575 */
+  /* ./parser//parser.nit:3573 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3576 */
+  /* ./parser//parser.nit:3574 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3577 */
+  /* ./parser//parser.nit:3575 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3578 */
+  /* ./parser//parser.nit:3576 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3579 */
+  /* ./parser//parser.nit:3577 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3580 */
+  /* ./parser//parser.nit:3578 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3581 */
+  /* ./parser//parser.nit:3579 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3582 */
+  /* ./parser//parser.nit:3580 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3583 */
+  /* ./parser//parser.nit:3581 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3585 */
+  /* ./parser//parser.nit:3583 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3583);
+  }
+  /* ./parser//parser.nit:3585 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3585);
   }
   /* ./parser//parser.nit:3587 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3587);
   }
   /* ./parser//parser.nit:3589 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3589);
   }
   /* ./parser//parser.nit:3591 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3591);
   }
   /* ./parser//parser.nit:3593 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3593);
-  }
-  /* ./parser//parser.nit:3595 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TString, ID_TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3595);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3593);
   }
-  /* ./parser//parser.nit:3596 */
+  /* ./parser//parser.nit:3594 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3605 */
+  /* ./parser//parser.nit:3603 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3606 */
+  /* ./parser//parser.nit:3604 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction79____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3606);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3604);
   }
   REGB0 = ATTR_parser___ReduceAction79____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13358,7 +13346,7 @@ void parser___ReduceAction79___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos82]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3609;
+  fra.me.line = 3607;
   fra.me.meth = LOCATE_parser___ReduceAction79___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13366,7 +13354,7 @@ void parser___ReduceAction79___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3609 */
+  /* ./parser//parser.nit:3607 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction79____goto(fra.me.REG[1]) = REGB0;
@@ -13380,7 +13368,7 @@ void parser___ReduceAction80___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3613;
+  fra.me.line = 3611;
   fra.me.meth = LOCATE_parser___ReduceAction80___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -13396,77 +13384,77 @@ void parser___ReduceAction80___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3615 */
+  /* ./parser//parser.nit:3613 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3616 */
+  /* ./parser//parser.nit:3614 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3617 */
+  /* ./parser//parser.nit:3615 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3618 */
+  /* ./parser//parser.nit:3616 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3619 */
+  /* ./parser//parser.nit:3617 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3620 */
+  /* ./parser//parser.nit:3618 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3621 */
+  /* ./parser//parser.nit:3619 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3622 */
+  /* ./parser//parser.nit:3620 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3623 */
+  /* ./parser//parser.nit:3621 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3624 */
+  /* ./parser//parser.nit:3622 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3626 */
+  /* ./parser//parser.nit:3624 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3624);
+  }
+  /* ./parser//parser.nit:3626 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3626);
   }
   /* ./parser//parser.nit:3628 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3628);
   }
   /* ./parser//parser.nit:3630 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3630);
   }
   /* ./parser//parser.nit:3632 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwmeth, ID_TKwmeth)) /*cast nullable TKwmeth*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3632);
   }
   /* ./parser//parser.nit:3634 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3634);
   }
   /* ./parser//parser.nit:3636 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3636);
-  }
-  /* ./parser//parser.nit:3638 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TString, ID_TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3638);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3636);
   }
-  /* ./parser//parser.nit:3639 */
+  /* ./parser//parser.nit:3637 */
   fra.me.REG[3] = NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:3648 */
+  /* ./parser//parser.nit:3646 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3649 */
+  /* ./parser//parser.nit:3647 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction80____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3649);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3647);
   }
   REGB0 = ATTR_parser___ReduceAction80____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13482,7 +13470,7 @@ void parser___ReduceAction80___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos83]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3652;
+  fra.me.line = 3650;
   fra.me.meth = LOCATE_parser___ReduceAction80___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13490,7 +13478,7 @@ void parser___ReduceAction80___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3652 */
+  /* ./parser//parser.nit:3650 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction80____goto(fra.me.REG[1]) = REGB0;
@@ -13504,7 +13492,7 @@ void parser___ReduceAction81___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3656;
+  fra.me.line = 3654;
   fra.me.meth = LOCATE_parser___ReduceAction81___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -13517,49 +13505,49 @@ void parser___ReduceAction81___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3658 */
+  /* ./parser//parser.nit:3656 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3659 */
+  /* ./parser//parser.nit:3657 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3660 */
+  /* ./parser//parser.nit:3658 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3661 */
+  /* ./parser//parser.nit:3659 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3662 */
+  /* ./parser//parser.nit:3660 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3664 */
+  /* ./parser//parser.nit:3662 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3664);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3662);
   }
-  /* ./parser//parser.nit:3666 */
+  /* ./parser//parser.nit:3664 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3666);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3664);
   }
-  /* ./parser//parser.nit:3668 */
+  /* ./parser//parser.nit:3666 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3668);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3666);
   }
-  /* ./parser//parser.nit:3670 */
+  /* ./parser//parser.nit:3668 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3670);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3668);
   }
-  /* ./parser//parser.nit:3671 */
+  /* ./parser//parser.nit:3669 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3683 */
+  /* ./parser//parser.nit:3681 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3684 */
+  /* ./parser//parser.nit:3682 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction81____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3684);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3682);
   }
   REGB0 = ATTR_parser___ReduceAction81____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13575,7 +13563,7 @@ void parser___ReduceAction81___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos84]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3687;
+  fra.me.line = 3685;
   fra.me.meth = LOCATE_parser___ReduceAction81___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13583,7 +13571,7 @@ void parser___ReduceAction81___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3687 */
+  /* ./parser//parser.nit:3685 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction81____goto(fra.me.REG[1]) = REGB0;
@@ -13597,7 +13585,7 @@ void parser___ReduceAction82___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3691;
+  fra.me.line = 3689;
   fra.me.meth = LOCATE_parser___ReduceAction82___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -13611,57 +13599,57 @@ void parser___ReduceAction82___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3693 */
+  /* ./parser//parser.nit:3691 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3694 */
+  /* ./parser//parser.nit:3692 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3695 */
+  /* ./parser//parser.nit:3693 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3696 */
+  /* ./parser//parser.nit:3694 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3697 */
+  /* ./parser//parser.nit:3695 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3698 */
+  /* ./parser//parser.nit:3696 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3700 */
+  /* ./parser//parser.nit:3698 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3700);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3698);
   }
-  /* ./parser//parser.nit:3702 */
+  /* ./parser//parser.nit:3700 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3702);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3700);
   }
-  /* ./parser//parser.nit:3704 */
+  /* ./parser//parser.nit:3702 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3704);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3702);
   }
-  /* ./parser//parser.nit:3706 */
+  /* ./parser//parser.nit:3704 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3706);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3704);
   }
-  /* ./parser//parser.nit:3708 */
+  /* ./parser//parser.nit:3706 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3708);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3706);
   }
-  /* ./parser//parser.nit:3709 */
+  /* ./parser//parser.nit:3707 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3721 */
+  /* ./parser//parser.nit:3719 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3722 */
+  /* ./parser//parser.nit:3720 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction82____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3722);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3720);
   }
   REGB0 = ATTR_parser___ReduceAction82____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13677,7 +13665,7 @@ void parser___ReduceAction82___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos85]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3725;
+  fra.me.line = 3723;
   fra.me.meth = LOCATE_parser___ReduceAction82___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13685,7 +13673,7 @@ void parser___ReduceAction82___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3725 */
+  /* ./parser//parser.nit:3723 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction82____goto(fra.me.REG[1]) = REGB0;
@@ -13699,7 +13687,7 @@ void parser___ReduceAction83___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3729;
+  fra.me.line = 3727;
   fra.me.meth = LOCATE_parser___ReduceAction83___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -13713,57 +13701,57 @@ void parser___ReduceAction83___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3731 */
+  /* ./parser//parser.nit:3729 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3732 */
+  /* ./parser//parser.nit:3730 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3733 */
+  /* ./parser//parser.nit:3731 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3734 */
+  /* ./parser//parser.nit:3732 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3735 */
+  /* ./parser//parser.nit:3733 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3736 */
+  /* ./parser//parser.nit:3734 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3738 */
+  /* ./parser//parser.nit:3736 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3738);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3736);
   }
-  /* ./parser//parser.nit:3740 */
+  /* ./parser//parser.nit:3738 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3740);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3738);
   }
-  /* ./parser//parser.nit:3742 */
+  /* ./parser//parser.nit:3740 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3742);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3740);
   }
-  /* ./parser//parser.nit:3744 */
+  /* ./parser//parser.nit:3742 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3744);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3742);
   }
-  /* ./parser//parser.nit:3746 */
+  /* ./parser//parser.nit:3744 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3746);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3744);
   }
-  /* ./parser//parser.nit:3747 */
+  /* ./parser//parser.nit:3745 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], fra.me.REG[6], NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3759 */
+  /* ./parser//parser.nit:3757 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3760 */
+  /* ./parser//parser.nit:3758 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction83____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3760);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3758);
   }
   REGB0 = ATTR_parser___ReduceAction83____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13779,7 +13767,7 @@ void parser___ReduceAction83___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos86]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3763;
+  fra.me.line = 3761;
   fra.me.meth = LOCATE_parser___ReduceAction83___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13787,7 +13775,7 @@ void parser___ReduceAction83___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3763 */
+  /* ./parser//parser.nit:3761 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction83____goto(fra.me.REG[1]) = REGB0;
@@ -13801,7 +13789,7 @@ void parser___ReduceAction84___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3767;
+  fra.me.line = 3765;
   fra.me.meth = LOCATE_parser___ReduceAction84___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -13816,65 +13804,65 @@ void parser___ReduceAction84___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3769 */
+  /* ./parser//parser.nit:3767 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3770 */
+  /* ./parser//parser.nit:3768 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3771 */
+  /* ./parser//parser.nit:3769 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3772 */
+  /* ./parser//parser.nit:3770 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3773 */
+  /* ./parser//parser.nit:3771 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3774 */
+  /* ./parser//parser.nit:3772 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3775 */
+  /* ./parser//parser.nit:3773 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3777 */
+  /* ./parser//parser.nit:3775 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3775);
+  }
+  /* ./parser//parser.nit:3777 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3777);
   }
   /* ./parser//parser.nit:3779 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3779);
   }
   /* ./parser//parser.nit:3781 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3781);
   }
   /* ./parser//parser.nit:3783 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3783);
   }
   /* ./parser//parser.nit:3785 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3785);
-  }
-  /* ./parser//parser.nit:3787 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3787);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3785);
   }
-  /* ./parser//parser.nit:3788 */
+  /* ./parser//parser.nit:3786 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3800 */
+  /* ./parser//parser.nit:3798 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3801 */
+  /* ./parser//parser.nit:3799 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction84____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3801);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3799);
   }
   REGB0 = ATTR_parser___ReduceAction84____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13890,7 +13878,7 @@ void parser___ReduceAction84___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos87]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3804;
+  fra.me.line = 3802;
   fra.me.meth = LOCATE_parser___ReduceAction84___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13898,7 +13886,7 @@ void parser___ReduceAction84___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3804 */
+  /* ./parser//parser.nit:3802 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction84____goto(fra.me.REG[1]) = REGB0;
@@ -13912,7 +13900,7 @@ void parser___ReduceAction85___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3808;
+  fra.me.line = 3806;
   fra.me.meth = LOCATE_parser___ReduceAction85___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -13926,57 +13914,57 @@ void parser___ReduceAction85___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3810 */
+  /* ./parser//parser.nit:3808 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3811 */
+  /* ./parser//parser.nit:3809 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3812 */
+  /* ./parser//parser.nit:3810 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3813 */
+  /* ./parser//parser.nit:3811 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3814 */
+  /* ./parser//parser.nit:3812 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3815 */
+  /* ./parser//parser.nit:3813 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3817 */
+  /* ./parser//parser.nit:3815 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3817);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3815);
   }
-  /* ./parser//parser.nit:3819 */
+  /* ./parser//parser.nit:3817 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3819);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3817);
   }
-  /* ./parser//parser.nit:3821 */
+  /* ./parser//parser.nit:3819 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3821);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3819);
   }
-  /* ./parser//parser.nit:3823 */
+  /* ./parser//parser.nit:3821 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3823);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3821);
   }
-  /* ./parser//parser.nit:3825 */
+  /* ./parser//parser.nit:3823 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3825);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3823);
   }
-  /* ./parser//parser.nit:3826 */
+  /* ./parser//parser.nit:3824 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3838 */
+  /* ./parser//parser.nit:3836 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3839 */
+  /* ./parser//parser.nit:3837 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction85____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3839);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3837);
   }
   REGB0 = ATTR_parser___ReduceAction85____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -13992,7 +13980,7 @@ void parser___ReduceAction85___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos88]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3842;
+  fra.me.line = 3840;
   fra.me.meth = LOCATE_parser___ReduceAction85___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14000,7 +13988,7 @@ void parser___ReduceAction85___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3842 */
+  /* ./parser//parser.nit:3840 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction85____goto(fra.me.REG[1]) = REGB0;
@@ -14014,7 +14002,7 @@ void parser___ReduceAction86___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3846;
+  fra.me.line = 3844;
   fra.me.meth = LOCATE_parser___ReduceAction86___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -14029,65 +14017,65 @@ void parser___ReduceAction86___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3848 */
+  /* ./parser//parser.nit:3846 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3849 */
+  /* ./parser//parser.nit:3847 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3850 */
+  /* ./parser//parser.nit:3848 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3851 */
+  /* ./parser//parser.nit:3849 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3852 */
+  /* ./parser//parser.nit:3850 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3853 */
+  /* ./parser//parser.nit:3851 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3854 */
+  /* ./parser//parser.nit:3852 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3856 */
+  /* ./parser//parser.nit:3854 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3854);
+  }
+  /* ./parser//parser.nit:3856 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3856);
   }
   /* ./parser//parser.nit:3858 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3858);
   }
   /* ./parser//parser.nit:3860 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3860);
   }
   /* ./parser//parser.nit:3862 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3862);
   }
   /* ./parser//parser.nit:3864 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3864);
-  }
-  /* ./parser//parser.nit:3866 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3866);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3864);
   }
-  /* ./parser//parser.nit:3867 */
+  /* ./parser//parser.nit:3865 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3879 */
+  /* ./parser//parser.nit:3877 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3880 */
+  /* ./parser//parser.nit:3878 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction86____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3880);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3878);
   }
   REGB0 = ATTR_parser___ReduceAction86____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14103,7 +14091,7 @@ void parser___ReduceAction86___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos89]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3883;
+  fra.me.line = 3881;
   fra.me.meth = LOCATE_parser___ReduceAction86___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14111,7 +14099,7 @@ void parser___ReduceAction86___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3883 */
+  /* ./parser//parser.nit:3881 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction86____goto(fra.me.REG[1]) = REGB0;
@@ -14125,7 +14113,7 @@ void parser___ReduceAction87___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3887;
+  fra.me.line = 3885;
   fra.me.meth = LOCATE_parser___ReduceAction87___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -14140,65 +14128,65 @@ void parser___ReduceAction87___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3889 */
+  /* ./parser//parser.nit:3887 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3890 */
+  /* ./parser//parser.nit:3888 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3891 */
+  /* ./parser//parser.nit:3889 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3892 */
+  /* ./parser//parser.nit:3890 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3893 */
+  /* ./parser//parser.nit:3891 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3894 */
+  /* ./parser//parser.nit:3892 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3895 */
+  /* ./parser//parser.nit:3893 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3897 */
+  /* ./parser//parser.nit:3895 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3895);
+  }
+  /* ./parser//parser.nit:3897 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3897);
   }
   /* ./parser//parser.nit:3899 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3899);
   }
   /* ./parser//parser.nit:3901 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3901);
   }
   /* ./parser//parser.nit:3903 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3903);
   }
   /* ./parser//parser.nit:3905 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3905);
-  }
-  /* ./parser//parser.nit:3907 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3907);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3905);
   }
-  /* ./parser//parser.nit:3908 */
+  /* ./parser//parser.nit:3906 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3920 */
+  /* ./parser//parser.nit:3918 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3921 */
+  /* ./parser//parser.nit:3919 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction87____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3921);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3919);
   }
   REGB0 = ATTR_parser___ReduceAction87____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14214,7 +14202,7 @@ void parser___ReduceAction87___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos90]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3924;
+  fra.me.line = 3922;
   fra.me.meth = LOCATE_parser___ReduceAction87___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14222,7 +14210,7 @@ void parser___ReduceAction87___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3924 */
+  /* ./parser//parser.nit:3922 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction87____goto(fra.me.REG[1]) = REGB0;
@@ -14236,7 +14224,7 @@ void parser___ReduceAction88___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3928;
+  fra.me.line = 3926;
   fra.me.meth = LOCATE_parser___ReduceAction88___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -14252,73 +14240,73 @@ void parser___ReduceAction88___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3930 */
+  /* ./parser//parser.nit:3928 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3931 */
+  /* ./parser//parser.nit:3929 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3932 */
+  /* ./parser//parser.nit:3930 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3933 */
+  /* ./parser//parser.nit:3931 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3934 */
+  /* ./parser//parser.nit:3932 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3935 */
+  /* ./parser//parser.nit:3933 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3936 */
+  /* ./parser//parser.nit:3934 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3937 */
+  /* ./parser//parser.nit:3935 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3939 */
+  /* ./parser//parser.nit:3937 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3937);
+  }
+  /* ./parser//parser.nit:3939 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3939);
   }
   /* ./parser//parser.nit:3941 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3941);
   }
   /* ./parser//parser.nit:3943 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3943);
   }
   /* ./parser//parser.nit:3945 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3945);
   }
   /* ./parser//parser.nit:3947 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 3947);
   }
   /* ./parser//parser.nit:3949 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3949);
-  }
-  /* ./parser//parser.nit:3951 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3951);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3949);
   }
-  /* ./parser//parser.nit:3952 */
+  /* ./parser//parser.nit:3950 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:3964 */
+  /* ./parser//parser.nit:3962 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:3965 */
+  /* ./parser//parser.nit:3963 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction88____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3965);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 3963);
   }
   REGB0 = ATTR_parser___ReduceAction88____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14334,7 +14322,7 @@ void parser___ReduceAction88___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos91]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3968;
+  fra.me.line = 3966;
   fra.me.meth = LOCATE_parser___ReduceAction88___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14342,7 +14330,7 @@ void parser___ReduceAction88___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:3968 */
+  /* ./parser//parser.nit:3966 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction88____goto(fra.me.REG[1]) = REGB0;
@@ -14356,7 +14344,7 @@ void parser___ReduceAction89___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 3972;
+  fra.me.line = 3970;
   fra.me.meth = LOCATE_parser___ReduceAction89___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -14370,57 +14358,57 @@ void parser___ReduceAction89___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:3974 */
+  /* ./parser//parser.nit:3972 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:3975 */
+  /* ./parser//parser.nit:3973 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3976 */
+  /* ./parser//parser.nit:3974 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3977 */
+  /* ./parser//parser.nit:3975 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3978 */
+  /* ./parser//parser.nit:3976 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3979 */
+  /* ./parser//parser.nit:3977 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:3981 */
+  /* ./parser//parser.nit:3979 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3981);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3979);
   }
-  /* ./parser//parser.nit:3983 */
+  /* ./parser//parser.nit:3981 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3983);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3981);
   }
-  /* ./parser//parser.nit:3985 */
+  /* ./parser//parser.nit:3983 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3985);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3983);
   }
-  /* ./parser//parser.nit:3987 */
+  /* ./parser//parser.nit:3985 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3985);
   }
-  /* ./parser//parser.nit:3989 */
+  /* ./parser//parser.nit:3987 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 3989);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 3987);
   }
-  /* ./parser//parser.nit:3990 */
+  /* ./parser//parser.nit:3988 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4002 */
+  /* ./parser//parser.nit:4000 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4003 */
+  /* ./parser//parser.nit:4001 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction89____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4003);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4001);
   }
   REGB0 = ATTR_parser___ReduceAction89____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14436,7 +14424,7 @@ void parser___ReduceAction89___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos92]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4006;
+  fra.me.line = 4004;
   fra.me.meth = LOCATE_parser___ReduceAction89___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14444,7 +14432,7 @@ void parser___ReduceAction89___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4006 */
+  /* ./parser//parser.nit:4004 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction89____goto(fra.me.REG[1]) = REGB0;
@@ -14458,7 +14446,7 @@ void parser___ReduceAction90___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4010;
+  fra.me.line = 4008;
   fra.me.meth = LOCATE_parser___ReduceAction90___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -14473,65 +14461,65 @@ void parser___ReduceAction90___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4012 */
+  /* ./parser//parser.nit:4010 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4013 */
+  /* ./parser//parser.nit:4011 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4014 */
+  /* ./parser//parser.nit:4012 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4015 */
+  /* ./parser//parser.nit:4013 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4016 */
+  /* ./parser//parser.nit:4014 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4017 */
+  /* ./parser//parser.nit:4015 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4018 */
+  /* ./parser//parser.nit:4016 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4020 */
+  /* ./parser//parser.nit:4018 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4018);
+  }
+  /* ./parser//parser.nit:4020 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4020);
   }
   /* ./parser//parser.nit:4022 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4022);
   }
   /* ./parser//parser.nit:4024 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4024);
   }
   /* ./parser//parser.nit:4026 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4026);
   }
   /* ./parser//parser.nit:4028 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4028);
-  }
-  /* ./parser//parser.nit:4030 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4030);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4028);
   }
-  /* ./parser//parser.nit:4031 */
+  /* ./parser//parser.nit:4029 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4043 */
+  /* ./parser//parser.nit:4041 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4044 */
+  /* ./parser//parser.nit:4042 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction90____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4044);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4042);
   }
   REGB0 = ATTR_parser___ReduceAction90____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14547,7 +14535,7 @@ void parser___ReduceAction90___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos93]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4047;
+  fra.me.line = 4045;
   fra.me.meth = LOCATE_parser___ReduceAction90___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14555,7 +14543,7 @@ void parser___ReduceAction90___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4047 */
+  /* ./parser//parser.nit:4045 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction90____goto(fra.me.REG[1]) = REGB0;
@@ -14569,7 +14557,7 @@ void parser___ReduceAction91___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4051;
+  fra.me.line = 4049;
   fra.me.meth = LOCATE_parser___ReduceAction91___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -14584,65 +14572,65 @@ void parser___ReduceAction91___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4053 */
+  /* ./parser//parser.nit:4051 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4054 */
+  /* ./parser//parser.nit:4052 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4055 */
+  /* ./parser//parser.nit:4053 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4056 */
+  /* ./parser//parser.nit:4054 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4057 */
+  /* ./parser//parser.nit:4055 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4058 */
+  /* ./parser//parser.nit:4056 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4059 */
+  /* ./parser//parser.nit:4057 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4061 */
+  /* ./parser//parser.nit:4059 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4059);
+  }
+  /* ./parser//parser.nit:4061 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4061);
   }
   /* ./parser//parser.nit:4063 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4063);
   }
   /* ./parser//parser.nit:4065 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4065);
   }
   /* ./parser//parser.nit:4067 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4067);
   }
   /* ./parser//parser.nit:4069 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4069);
-  }
-  /* ./parser//parser.nit:4071 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4071);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4069);
   }
-  /* ./parser//parser.nit:4072 */
+  /* ./parser//parser.nit:4070 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4084 */
+  /* ./parser//parser.nit:4082 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4085 */
+  /* ./parser//parser.nit:4083 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction91____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4085);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4083);
   }
   REGB0 = ATTR_parser___ReduceAction91____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14658,7 +14646,7 @@ void parser___ReduceAction91___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos94]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4088;
+  fra.me.line = 4086;
   fra.me.meth = LOCATE_parser___ReduceAction91___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14666,7 +14654,7 @@ void parser___ReduceAction91___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4088 */
+  /* ./parser//parser.nit:4086 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction91____goto(fra.me.REG[1]) = REGB0;
@@ -14680,7 +14668,7 @@ void parser___ReduceAction92___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4092;
+  fra.me.line = 4090;
   fra.me.meth = LOCATE_parser___ReduceAction92___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -14696,73 +14684,73 @@ void parser___ReduceAction92___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4094 */
+  /* ./parser//parser.nit:4092 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4095 */
+  /* ./parser//parser.nit:4093 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4096 */
+  /* ./parser//parser.nit:4094 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4097 */
+  /* ./parser//parser.nit:4095 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4098 */
+  /* ./parser//parser.nit:4096 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4099 */
+  /* ./parser//parser.nit:4097 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4100 */
+  /* ./parser//parser.nit:4098 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4101 */
+  /* ./parser//parser.nit:4099 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4103 */
+  /* ./parser//parser.nit:4101 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4101);
+  }
+  /* ./parser//parser.nit:4103 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4103);
   }
   /* ./parser//parser.nit:4105 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4105);
   }
   /* ./parser//parser.nit:4107 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4107);
   }
   /* ./parser//parser.nit:4109 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4109);
   }
   /* ./parser//parser.nit:4111 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4111);
   }
   /* ./parser//parser.nit:4113 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4113);
-  }
-  /* ./parser//parser.nit:4115 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4115);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4113);
   }
-  /* ./parser//parser.nit:4116 */
+  /* ./parser//parser.nit:4114 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4128 */
+  /* ./parser//parser.nit:4126 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4129 */
+  /* ./parser//parser.nit:4127 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction92____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4129);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4127);
   }
   REGB0 = ATTR_parser___ReduceAction92____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14778,7 +14766,7 @@ void parser___ReduceAction92___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos95]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4132;
+  fra.me.line = 4130;
   fra.me.meth = LOCATE_parser___ReduceAction92___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14786,7 +14774,7 @@ void parser___ReduceAction92___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4132 */
+  /* ./parser//parser.nit:4130 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction92____goto(fra.me.REG[1]) = REGB0;
@@ -14800,7 +14788,7 @@ void parser___ReduceAction93___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4136;
+  fra.me.line = 4134;
   fra.me.meth = LOCATE_parser___ReduceAction93___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -14815,65 +14803,65 @@ void parser___ReduceAction93___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4138 */
+  /* ./parser//parser.nit:4136 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4139 */
+  /* ./parser//parser.nit:4137 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4140 */
+  /* ./parser//parser.nit:4138 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4141 */
+  /* ./parser//parser.nit:4139 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4142 */
+  /* ./parser//parser.nit:4140 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4143 */
+  /* ./parser//parser.nit:4141 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4144 */
+  /* ./parser//parser.nit:4142 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4146 */
+  /* ./parser//parser.nit:4144 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4144);
+  }
+  /* ./parser//parser.nit:4146 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4146);
   }
   /* ./parser//parser.nit:4148 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4148);
   }
   /* ./parser//parser.nit:4150 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4150);
   }
   /* ./parser//parser.nit:4152 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4152);
   }
   /* ./parser//parser.nit:4154 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4154);
-  }
-  /* ./parser//parser.nit:4156 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4156);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4154);
   }
-  /* ./parser//parser.nit:4157 */
+  /* ./parser//parser.nit:4155 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4169 */
+  /* ./parser//parser.nit:4167 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4170 */
+  /* ./parser//parser.nit:4168 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction93____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4170);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4168);
   }
   REGB0 = ATTR_parser___ReduceAction93____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -14889,7 +14877,7 @@ void parser___ReduceAction93___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos96]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4173;
+  fra.me.line = 4171;
   fra.me.meth = LOCATE_parser___ReduceAction93___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -14897,7 +14885,7 @@ void parser___ReduceAction93___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4173 */
+  /* ./parser//parser.nit:4171 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction93____goto(fra.me.REG[1]) = REGB0;
@@ -14911,7 +14899,7 @@ void parser___ReduceAction94___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4177;
+  fra.me.line = 4175;
   fra.me.meth = LOCATE_parser___ReduceAction94___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -14927,73 +14915,73 @@ void parser___ReduceAction94___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4179 */
+  /* ./parser//parser.nit:4177 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4180 */
+  /* ./parser//parser.nit:4178 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4181 */
+  /* ./parser//parser.nit:4179 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4182 */
+  /* ./parser//parser.nit:4180 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4183 */
+  /* ./parser//parser.nit:4181 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4184 */
+  /* ./parser//parser.nit:4182 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4185 */
+  /* ./parser//parser.nit:4183 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4186 */
+  /* ./parser//parser.nit:4184 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4188 */
+  /* ./parser//parser.nit:4186 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4186);
+  }
+  /* ./parser//parser.nit:4188 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4188);
   }
   /* ./parser//parser.nit:4190 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4190);
   }
   /* ./parser//parser.nit:4192 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4192);
   }
   /* ./parser//parser.nit:4194 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4194);
   }
   /* ./parser//parser.nit:4196 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4196);
   }
   /* ./parser//parser.nit:4198 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4198);
-  }
-  /* ./parser//parser.nit:4200 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4200);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4198);
   }
-  /* ./parser//parser.nit:4201 */
+  /* ./parser//parser.nit:4199 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4213 */
+  /* ./parser//parser.nit:4211 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4214 */
+  /* ./parser//parser.nit:4212 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction94____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4214);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4212);
   }
   REGB0 = ATTR_parser___ReduceAction94____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15009,7 +14997,7 @@ void parser___ReduceAction94___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos97]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4217;
+  fra.me.line = 4215;
   fra.me.meth = LOCATE_parser___ReduceAction94___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15017,7 +15005,7 @@ void parser___ReduceAction94___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4217 */
+  /* ./parser//parser.nit:4215 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction94____goto(fra.me.REG[1]) = REGB0;
@@ -15031,7 +15019,7 @@ void parser___ReduceAction95___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4221;
+  fra.me.line = 4219;
   fra.me.meth = LOCATE_parser___ReduceAction95___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -15047,73 +15035,73 @@ void parser___ReduceAction95___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4223 */
+  /* ./parser//parser.nit:4221 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4224 */
+  /* ./parser//parser.nit:4222 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4225 */
+  /* ./parser//parser.nit:4223 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4226 */
+  /* ./parser//parser.nit:4224 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4227 */
+  /* ./parser//parser.nit:4225 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4228 */
+  /* ./parser//parser.nit:4226 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4229 */
+  /* ./parser//parser.nit:4227 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4230 */
+  /* ./parser//parser.nit:4228 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4232 */
+  /* ./parser//parser.nit:4230 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4230);
+  }
+  /* ./parser//parser.nit:4232 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4232);
   }
   /* ./parser//parser.nit:4234 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4234);
   }
   /* ./parser//parser.nit:4236 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4236);
   }
   /* ./parser//parser.nit:4238 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4238);
   }
   /* ./parser//parser.nit:4240 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4240);
   }
   /* ./parser//parser.nit:4242 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4242);
-  }
-  /* ./parser//parser.nit:4244 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4244);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4242);
   }
-  /* ./parser//parser.nit:4245 */
+  /* ./parser//parser.nit:4243 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4257 */
+  /* ./parser//parser.nit:4255 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4258 */
+  /* ./parser//parser.nit:4256 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction95____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4258);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4256);
   }
   REGB0 = ATTR_parser___ReduceAction95____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15129,7 +15117,7 @@ void parser___ReduceAction95___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos98]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4261;
+  fra.me.line = 4259;
   fra.me.meth = LOCATE_parser___ReduceAction95___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15137,7 +15125,7 @@ void parser___ReduceAction95___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4261 */
+  /* ./parser//parser.nit:4259 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction95____goto(fra.me.REG[1]) = REGB0;
@@ -15151,7 +15139,7 @@ void parser___ReduceAction96___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4265;
+  fra.me.line = 4263;
   fra.me.meth = LOCATE_parser___ReduceAction96___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -15168,81 +15156,81 @@ void parser___ReduceAction96___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4267 */
+  /* ./parser//parser.nit:4265 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4268 */
+  /* ./parser//parser.nit:4266 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4269 */
+  /* ./parser//parser.nit:4267 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4270 */
+  /* ./parser//parser.nit:4268 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4271 */
+  /* ./parser//parser.nit:4269 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4272 */
+  /* ./parser//parser.nit:4270 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4273 */
+  /* ./parser//parser.nit:4271 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4274 */
+  /* ./parser//parser.nit:4272 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4275 */
+  /* ./parser//parser.nit:4273 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4277 */
+  /* ./parser//parser.nit:4275 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4275);
+  }
+  /* ./parser//parser.nit:4277 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4277);
   }
   /* ./parser//parser.nit:4279 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4279);
   }
   /* ./parser//parser.nit:4281 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4281);
   }
   /* ./parser//parser.nit:4283 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4283);
   }
   /* ./parser//parser.nit:4285 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4285);
   }
   /* ./parser//parser.nit:4287 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4287);
   }
   /* ./parser//parser.nit:4289 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4289);
-  }
-  /* ./parser//parser.nit:4291 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4291);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4289);
   }
-  /* ./parser//parser.nit:4292 */
+  /* ./parser//parser.nit:4290 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:4304 */
+  /* ./parser//parser.nit:4302 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4305 */
+  /* ./parser//parser.nit:4303 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction96____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4305);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4303);
   }
   REGB0 = ATTR_parser___ReduceAction96____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15258,7 +15246,7 @@ void parser___ReduceAction96___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos99]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4308;
+  fra.me.line = 4306;
   fra.me.meth = LOCATE_parser___ReduceAction96___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15266,7 +15254,7 @@ void parser___ReduceAction96___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4308 */
+  /* ./parser//parser.nit:4306 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction96____goto(fra.me.REG[1]) = REGB0;
@@ -15280,7 +15268,7 @@ void parser___ReduceAction97___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4312;
+  fra.me.line = 4310;
   fra.me.meth = LOCATE_parser___ReduceAction97___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -15294,61 +15282,61 @@ void parser___ReduceAction97___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4314 */
+  /* ./parser//parser.nit:4312 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4315 */
+  /* ./parser//parser.nit:4313 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4316 */
+  /* ./parser//parser.nit:4314 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4317 */
+  /* ./parser//parser.nit:4315 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4318 */
+  /* ./parser//parser.nit:4316 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4319 */
+  /* ./parser//parser.nit:4317 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4320 */
+  /* ./parser//parser.nit:4318 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4321 */
+  /* ./parser//parser.nit:4319 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4323 */
+  /* ./parser//parser.nit:4321 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4323);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4321);
   }
-  /* ./parser//parser.nit:4325 */
+  /* ./parser//parser.nit:4323 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4325);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4323);
   }
-  /* ./parser//parser.nit:4327 */
+  /* ./parser//parser.nit:4325 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4327);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4325);
   }
-  /* ./parser//parser.nit:4329 */
+  /* ./parser//parser.nit:4327 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4329);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4327);
   }
-  /* ./parser//parser.nit:4331 */
+  /* ./parser//parser.nit:4329 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4331);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4329);
   }
-  /* ./parser//parser.nit:4332 */
+  /* ./parser//parser.nit:4330 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4344 */
+  /* ./parser//parser.nit:4342 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4345 */
+  /* ./parser//parser.nit:4343 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction97____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4345);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4343);
   }
   REGB0 = ATTR_parser___ReduceAction97____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15364,7 +15352,7 @@ void parser___ReduceAction97___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos100]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4348;
+  fra.me.line = 4346;
   fra.me.meth = LOCATE_parser___ReduceAction97___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15372,7 +15360,7 @@ void parser___ReduceAction97___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4348 */
+  /* ./parser//parser.nit:4346 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction97____goto(fra.me.REG[1]) = REGB0;
@@ -15386,7 +15374,7 @@ void parser___ReduceAction98___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4352;
+  fra.me.line = 4350;
   fra.me.meth = LOCATE_parser___ReduceAction98___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -15401,69 +15389,69 @@ void parser___ReduceAction98___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4354 */
+  /* ./parser//parser.nit:4352 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4355 */
+  /* ./parser//parser.nit:4353 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4356 */
+  /* ./parser//parser.nit:4354 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4357 */
+  /* ./parser//parser.nit:4355 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4358 */
+  /* ./parser//parser.nit:4356 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4359 */
+  /* ./parser//parser.nit:4357 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4360 */
+  /* ./parser//parser.nit:4358 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4361 */
+  /* ./parser//parser.nit:4359 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4362 */
+  /* ./parser//parser.nit:4360 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4364 */
+  /* ./parser//parser.nit:4362 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4362);
+  }
+  /* ./parser//parser.nit:4364 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4364);
   }
   /* ./parser//parser.nit:4366 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4366);
   }
   /* ./parser//parser.nit:4368 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4368);
   }
   /* ./parser//parser.nit:4370 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4370);
   }
   /* ./parser//parser.nit:4372 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4372);
-  }
-  /* ./parser//parser.nit:4374 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4374);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4372);
   }
-  /* ./parser//parser.nit:4375 */
+  /* ./parser//parser.nit:4373 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4387 */
+  /* ./parser//parser.nit:4385 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4388 */
+  /* ./parser//parser.nit:4386 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction98____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4388);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4386);
   }
   REGB0 = ATTR_parser___ReduceAction98____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15479,7 +15467,7 @@ void parser___ReduceAction98___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos101]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4391;
+  fra.me.line = 4389;
   fra.me.meth = LOCATE_parser___ReduceAction98___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15487,7 +15475,7 @@ void parser___ReduceAction98___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4391 */
+  /* ./parser//parser.nit:4389 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction98____goto(fra.me.REG[1]) = REGB0;
@@ -15501,7 +15489,7 @@ void parser___ReduceAction99___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4395;
+  fra.me.line = 4393;
   fra.me.meth = LOCATE_parser___ReduceAction99___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -15516,69 +15504,69 @@ void parser___ReduceAction99___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4397 */
+  /* ./parser//parser.nit:4395 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4398 */
+  /* ./parser//parser.nit:4396 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4399 */
+  /* ./parser//parser.nit:4397 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4400 */
+  /* ./parser//parser.nit:4398 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4401 */
+  /* ./parser//parser.nit:4399 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4402 */
+  /* ./parser//parser.nit:4400 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4403 */
+  /* ./parser//parser.nit:4401 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4404 */
+  /* ./parser//parser.nit:4402 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4405 */
+  /* ./parser//parser.nit:4403 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4407 */
+  /* ./parser//parser.nit:4405 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4405);
+  }
+  /* ./parser//parser.nit:4407 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4407);
   }
   /* ./parser//parser.nit:4409 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4409);
   }
   /* ./parser//parser.nit:4411 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4411);
   }
   /* ./parser//parser.nit:4413 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4413);
   }
   /* ./parser//parser.nit:4415 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4415);
-  }
-  /* ./parser//parser.nit:4417 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4417);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4415);
   }
-  /* ./parser//parser.nit:4418 */
+  /* ./parser//parser.nit:4416 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4430 */
+  /* ./parser//parser.nit:4428 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4431 */
+  /* ./parser//parser.nit:4429 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction99____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4431);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4429);
   }
   REGB0 = ATTR_parser___ReduceAction99____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15594,7 +15582,7 @@ void parser___ReduceAction99___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos102]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4434;
+  fra.me.line = 4432;
   fra.me.meth = LOCATE_parser___ReduceAction99___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15602,7 +15590,7 @@ void parser___ReduceAction99___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4434 */
+  /* ./parser//parser.nit:4432 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction99____goto(fra.me.REG[1]) = REGB0;
@@ -15616,7 +15604,7 @@ void parser___ReduceAction100___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4438;
+  fra.me.line = 4436;
   fra.me.meth = LOCATE_parser___ReduceAction100___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -15632,77 +15620,77 @@ void parser___ReduceAction100___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4440 */
+  /* ./parser//parser.nit:4438 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4441 */
+  /* ./parser//parser.nit:4439 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4442 */
+  /* ./parser//parser.nit:4440 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4443 */
+  /* ./parser//parser.nit:4441 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4444 */
+  /* ./parser//parser.nit:4442 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4445 */
+  /* ./parser//parser.nit:4443 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4446 */
+  /* ./parser//parser.nit:4444 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4447 */
+  /* ./parser//parser.nit:4445 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4448 */
+  /* ./parser//parser.nit:4446 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4449 */
+  /* ./parser//parser.nit:4447 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4451 */
+  /* ./parser//parser.nit:4449 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4449);
+  }
+  /* ./parser//parser.nit:4451 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4451);
   }
   /* ./parser//parser.nit:4453 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4453);
   }
   /* ./parser//parser.nit:4455 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4455);
   }
   /* ./parser//parser.nit:4457 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4457);
   }
   /* ./parser//parser.nit:4459 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4459);
   }
   /* ./parser//parser.nit:4461 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4461);
-  }
-  /* ./parser//parser.nit:4463 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4463);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4461);
   }
-  /* ./parser//parser.nit:4464 */
+  /* ./parser//parser.nit:4462 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4476 */
+  /* ./parser//parser.nit:4474 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4477 */
+  /* ./parser//parser.nit:4475 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction100____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4477);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4475);
   }
   REGB0 = ATTR_parser___ReduceAction100____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15718,7 +15706,7 @@ void parser___ReduceAction100___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos103]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4480;
+  fra.me.line = 4478;
   fra.me.meth = LOCATE_parser___ReduceAction100___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15726,7 +15714,7 @@ void parser___ReduceAction100___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4480 */
+  /* ./parser//parser.nit:4478 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction100____goto(fra.me.REG[1]) = REGB0;
@@ -15740,7 +15728,7 @@ void parser___ReduceAction101___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4484;
+  fra.me.line = 4482;
   fra.me.meth = LOCATE_parser___ReduceAction101___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -15755,69 +15743,69 @@ void parser___ReduceAction101___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4486 */
+  /* ./parser//parser.nit:4484 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4487 */
+  /* ./parser//parser.nit:4485 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4488 */
+  /* ./parser//parser.nit:4486 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4489 */
+  /* ./parser//parser.nit:4487 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4490 */
+  /* ./parser//parser.nit:4488 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4491 */
+  /* ./parser//parser.nit:4489 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4492 */
+  /* ./parser//parser.nit:4490 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4493 */
+  /* ./parser//parser.nit:4491 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4494 */
+  /* ./parser//parser.nit:4492 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4496 */
+  /* ./parser//parser.nit:4494 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4494);
+  }
+  /* ./parser//parser.nit:4496 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4496);
   }
   /* ./parser//parser.nit:4498 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4498);
   }
   /* ./parser//parser.nit:4500 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4500);
   }
   /* ./parser//parser.nit:4502 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4502);
   }
   /* ./parser//parser.nit:4504 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4504);
-  }
-  /* ./parser//parser.nit:4506 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4506);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4504);
   }
-  /* ./parser//parser.nit:4507 */
+  /* ./parser//parser.nit:4505 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4519 */
+  /* ./parser//parser.nit:4517 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4520 */
+  /* ./parser//parser.nit:4518 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction101____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4520);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4518);
   }
   REGB0 = ATTR_parser___ReduceAction101____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15833,7 +15821,7 @@ void parser___ReduceAction101___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos104]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4523;
+  fra.me.line = 4521;
   fra.me.meth = LOCATE_parser___ReduceAction101___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15841,7 +15829,7 @@ void parser___ReduceAction101___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4523 */
+  /* ./parser//parser.nit:4521 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction101____goto(fra.me.REG[1]) = REGB0;
@@ -15855,7 +15843,7 @@ void parser___ReduceAction102___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4527;
+  fra.me.line = 4525;
   fra.me.meth = LOCATE_parser___ReduceAction102___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -15871,77 +15859,77 @@ void parser___ReduceAction102___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4529 */
+  /* ./parser//parser.nit:4527 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4530 */
+  /* ./parser//parser.nit:4528 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4531 */
+  /* ./parser//parser.nit:4529 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4532 */
+  /* ./parser//parser.nit:4530 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4533 */
+  /* ./parser//parser.nit:4531 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4534 */
+  /* ./parser//parser.nit:4532 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4535 */
+  /* ./parser//parser.nit:4533 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4536 */
+  /* ./parser//parser.nit:4534 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4537 */
+  /* ./parser//parser.nit:4535 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4538 */
+  /* ./parser//parser.nit:4536 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4540 */
+  /* ./parser//parser.nit:4538 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4538);
+  }
+  /* ./parser//parser.nit:4540 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4540);
   }
   /* ./parser//parser.nit:4542 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4542);
   }
   /* ./parser//parser.nit:4544 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4544);
   }
   /* ./parser//parser.nit:4546 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4546);
   }
   /* ./parser//parser.nit:4548 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4548);
   }
   /* ./parser//parser.nit:4550 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4550);
-  }
-  /* ./parser//parser.nit:4552 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4552);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4550);
   }
-  /* ./parser//parser.nit:4553 */
+  /* ./parser//parser.nit:4551 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4565 */
+  /* ./parser//parser.nit:4563 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4566 */
+  /* ./parser//parser.nit:4564 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction102____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4566);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4564);
   }
   REGB0 = ATTR_parser___ReduceAction102____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -15957,7 +15945,7 @@ void parser___ReduceAction102___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos105]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4569;
+  fra.me.line = 4567;
   fra.me.meth = LOCATE_parser___ReduceAction102___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -15965,7 +15953,7 @@ void parser___ReduceAction102___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4569 */
+  /* ./parser//parser.nit:4567 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction102____goto(fra.me.REG[1]) = REGB0;
@@ -15979,7 +15967,7 @@ void parser___ReduceAction103___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4573;
+  fra.me.line = 4571;
   fra.me.meth = LOCATE_parser___ReduceAction103___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -15995,77 +15983,77 @@ void parser___ReduceAction103___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4575 */
+  /* ./parser//parser.nit:4573 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4576 */
+  /* ./parser//parser.nit:4574 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4577 */
+  /* ./parser//parser.nit:4575 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4578 */
+  /* ./parser//parser.nit:4576 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4579 */
+  /* ./parser//parser.nit:4577 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4580 */
+  /* ./parser//parser.nit:4578 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4581 */
+  /* ./parser//parser.nit:4579 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4582 */
+  /* ./parser//parser.nit:4580 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4583 */
+  /* ./parser//parser.nit:4581 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4584 */
+  /* ./parser//parser.nit:4582 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4586 */
+  /* ./parser//parser.nit:4584 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4584);
+  }
+  /* ./parser//parser.nit:4586 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4586);
   }
   /* ./parser//parser.nit:4588 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4588);
   }
   /* ./parser//parser.nit:4590 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4590);
   }
   /* ./parser//parser.nit:4592 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4592);
   }
   /* ./parser//parser.nit:4594 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4594);
   }
   /* ./parser//parser.nit:4596 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4596);
-  }
-  /* ./parser//parser.nit:4598 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4598);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4596);
   }
-  /* ./parser//parser.nit:4599 */
+  /* ./parser//parser.nit:4597 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4611 */
+  /* ./parser//parser.nit:4609 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4612 */
+  /* ./parser//parser.nit:4610 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction103____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4612);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4610);
   }
   REGB0 = ATTR_parser___ReduceAction103____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16081,7 +16069,7 @@ void parser___ReduceAction103___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos106]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4615;
+  fra.me.line = 4613;
   fra.me.meth = LOCATE_parser___ReduceAction103___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16089,7 +16077,7 @@ void parser___ReduceAction103___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4615 */
+  /* ./parser//parser.nit:4613 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction103____goto(fra.me.REG[1]) = REGB0;
@@ -16103,7 +16091,7 @@ void parser___ReduceAction104___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4619;
+  fra.me.line = 4617;
   fra.me.meth = LOCATE_parser___ReduceAction104___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -16120,85 +16108,85 @@ void parser___ReduceAction104___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4621 */
+  /* ./parser//parser.nit:4619 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4622 */
+  /* ./parser//parser.nit:4620 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4623 */
+  /* ./parser//parser.nit:4621 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4624 */
+  /* ./parser//parser.nit:4622 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4625 */
+  /* ./parser//parser.nit:4623 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4626 */
+  /* ./parser//parser.nit:4624 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4627 */
+  /* ./parser//parser.nit:4625 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4628 */
+  /* ./parser//parser.nit:4626 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4629 */
+  /* ./parser//parser.nit:4627 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4630 */
+  /* ./parser//parser.nit:4628 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4631 */
+  /* ./parser//parser.nit:4629 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4633 */
+  /* ./parser//parser.nit:4631 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4631);
+  }
+  /* ./parser//parser.nit:4633 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4633);
   }
   /* ./parser//parser.nit:4635 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4635);
   }
   /* ./parser//parser.nit:4637 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4637);
   }
   /* ./parser//parser.nit:4639 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4639);
   }
   /* ./parser//parser.nit:4641 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4641);
   }
   /* ./parser//parser.nit:4643 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4643);
   }
   /* ./parser//parser.nit:4645 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4645);
-  }
-  /* ./parser//parser.nit:4647 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4647);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4645);
   }
-  /* ./parser//parser.nit:4648 */
+  /* ./parser//parser.nit:4646 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:4660 */
+  /* ./parser//parser.nit:4658 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4661 */
+  /* ./parser//parser.nit:4659 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction104____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4661);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4659);
   }
   REGB0 = ATTR_parser___ReduceAction104____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16214,7 +16202,7 @@ void parser___ReduceAction104___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos107]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4664;
+  fra.me.line = 4662;
   fra.me.meth = LOCATE_parser___ReduceAction104___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16222,7 +16210,7 @@ void parser___ReduceAction104___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4664 */
+  /* ./parser//parser.nit:4662 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction104____goto(fra.me.REG[1]) = REGB0;
@@ -16236,7 +16224,7 @@ void parser___ReduceAction105___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4668;
+  fra.me.line = 4666;
   fra.me.meth = LOCATE_parser___ReduceAction105___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -16251,69 +16239,69 @@ void parser___ReduceAction105___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4670 */
+  /* ./parser//parser.nit:4668 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4671 */
+  /* ./parser//parser.nit:4669 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4672 */
+  /* ./parser//parser.nit:4670 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4673 */
+  /* ./parser//parser.nit:4671 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4674 */
+  /* ./parser//parser.nit:4672 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4675 */
+  /* ./parser//parser.nit:4673 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4676 */
+  /* ./parser//parser.nit:4674 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4677 */
+  /* ./parser//parser.nit:4675 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4678 */
+  /* ./parser//parser.nit:4676 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4680 */
+  /* ./parser//parser.nit:4678 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4678);
+  }
+  /* ./parser//parser.nit:4680 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4680);
   }
   /* ./parser//parser.nit:4682 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4682);
   }
   /* ./parser//parser.nit:4684 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4684);
   }
   /* ./parser//parser.nit:4686 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4686);
   }
   /* ./parser//parser.nit:4688 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4688);
-  }
-  /* ./parser//parser.nit:4690 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4690);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4688);
   }
-  /* ./parser//parser.nit:4691 */
+  /* ./parser//parser.nit:4689 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4703 */
+  /* ./parser//parser.nit:4701 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4704 */
+  /* ./parser//parser.nit:4702 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction105____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4704);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4702);
   }
   REGB0 = ATTR_parser___ReduceAction105____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16329,7 +16317,7 @@ void parser___ReduceAction105___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos108]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4707;
+  fra.me.line = 4705;
   fra.me.meth = LOCATE_parser___ReduceAction105___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16337,7 +16325,7 @@ void parser___ReduceAction105___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4707 */
+  /* ./parser//parser.nit:4705 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction105____goto(fra.me.REG[1]) = REGB0;
@@ -16351,7 +16339,7 @@ void parser___ReduceAction106___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4711;
+  fra.me.line = 4709;
   fra.me.meth = LOCATE_parser___ReduceAction106___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -16367,77 +16355,77 @@ void parser___ReduceAction106___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4713 */
+  /* ./parser//parser.nit:4711 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4714 */
+  /* ./parser//parser.nit:4712 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4715 */
+  /* ./parser//parser.nit:4713 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4716 */
+  /* ./parser//parser.nit:4714 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4717 */
+  /* ./parser//parser.nit:4715 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4718 */
+  /* ./parser//parser.nit:4716 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4719 */
+  /* ./parser//parser.nit:4717 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4720 */
+  /* ./parser//parser.nit:4718 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4721 */
+  /* ./parser//parser.nit:4719 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4722 */
+  /* ./parser//parser.nit:4720 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4724 */
+  /* ./parser//parser.nit:4722 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4722);
+  }
+  /* ./parser//parser.nit:4724 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4724);
   }
   /* ./parser//parser.nit:4726 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4726);
   }
   /* ./parser//parser.nit:4728 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4728);
   }
   /* ./parser//parser.nit:4730 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4730);
   }
   /* ./parser//parser.nit:4732 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4732);
   }
   /* ./parser//parser.nit:4734 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
-  }
-  /* ./parser//parser.nit:4736 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4736);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4734);
   }
-  /* ./parser//parser.nit:4737 */
+  /* ./parser//parser.nit:4735 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4749 */
+  /* ./parser//parser.nit:4747 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4750 */
+  /* ./parser//parser.nit:4748 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction106____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4750);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4748);
   }
   REGB0 = ATTR_parser___ReduceAction106____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16453,7 +16441,7 @@ void parser___ReduceAction106___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos109]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4753;
+  fra.me.line = 4751;
   fra.me.meth = LOCATE_parser___ReduceAction106___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16461,7 +16449,7 @@ void parser___ReduceAction106___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4753 */
+  /* ./parser//parser.nit:4751 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction106____goto(fra.me.REG[1]) = REGB0;
@@ -16475,7 +16463,7 @@ void parser___ReduceAction107___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4757;
+  fra.me.line = 4755;
   fra.me.meth = LOCATE_parser___ReduceAction107___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -16491,77 +16479,77 @@ void parser___ReduceAction107___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4759 */
+  /* ./parser//parser.nit:4757 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4760 */
+  /* ./parser//parser.nit:4758 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4761 */
+  /* ./parser//parser.nit:4759 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4762 */
+  /* ./parser//parser.nit:4760 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4763 */
+  /* ./parser//parser.nit:4761 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4764 */
+  /* ./parser//parser.nit:4762 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4765 */
+  /* ./parser//parser.nit:4763 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4766 */
+  /* ./parser//parser.nit:4764 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4767 */
+  /* ./parser//parser.nit:4765 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4768 */
+  /* ./parser//parser.nit:4766 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4770 */
+  /* ./parser//parser.nit:4768 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4768);
+  }
+  /* ./parser//parser.nit:4770 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4770);
   }
   /* ./parser//parser.nit:4772 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4772);
   }
   /* ./parser//parser.nit:4774 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4774);
   }
   /* ./parser//parser.nit:4776 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4776);
   }
   /* ./parser//parser.nit:4778 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4778);
   }
   /* ./parser//parser.nit:4780 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4780);
-  }
-  /* ./parser//parser.nit:4782 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4782);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4780);
   }
-  /* ./parser//parser.nit:4783 */
+  /* ./parser//parser.nit:4781 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4795 */
+  /* ./parser//parser.nit:4793 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4796 */
+  /* ./parser//parser.nit:4794 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction107____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4796);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4794);
   }
   REGB0 = ATTR_parser___ReduceAction107____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16577,7 +16565,7 @@ void parser___ReduceAction107___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos110]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4799;
+  fra.me.line = 4797;
   fra.me.meth = LOCATE_parser___ReduceAction107___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16585,7 +16573,7 @@ void parser___ReduceAction107___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4799 */
+  /* ./parser//parser.nit:4797 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction107____goto(fra.me.REG[1]) = REGB0;
@@ -16599,7 +16587,7 @@ void parser___ReduceAction108___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4803;
+  fra.me.line = 4801;
   fra.me.meth = LOCATE_parser___ReduceAction108___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -16616,85 +16604,85 @@ void parser___ReduceAction108___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4805 */
+  /* ./parser//parser.nit:4803 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4806 */
+  /* ./parser//parser.nit:4804 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4807 */
+  /* ./parser//parser.nit:4805 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4808 */
+  /* ./parser//parser.nit:4806 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4809 */
+  /* ./parser//parser.nit:4807 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4810 */
+  /* ./parser//parser.nit:4808 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4811 */
+  /* ./parser//parser.nit:4809 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4812 */
+  /* ./parser//parser.nit:4810 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4813 */
+  /* ./parser//parser.nit:4811 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4814 */
+  /* ./parser//parser.nit:4812 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4815 */
+  /* ./parser//parser.nit:4813 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4817 */
+  /* ./parser//parser.nit:4815 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4815);
+  }
+  /* ./parser//parser.nit:4817 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4817);
   }
   /* ./parser//parser.nit:4819 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4819);
   }
   /* ./parser//parser.nit:4821 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4821);
   }
   /* ./parser//parser.nit:4823 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4823);
   }
   /* ./parser//parser.nit:4825 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4825);
   }
   /* ./parser//parser.nit:4827 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4827);
   }
   /* ./parser//parser.nit:4829 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4829);
-  }
-  /* ./parser//parser.nit:4831 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4831);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4829);
   }
-  /* ./parser//parser.nit:4832 */
+  /* ./parser//parser.nit:4830 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4844 */
+  /* ./parser//parser.nit:4842 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4845 */
+  /* ./parser//parser.nit:4843 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction108____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4845);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4843);
   }
   REGB0 = ATTR_parser___ReduceAction108____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16710,7 +16698,7 @@ void parser___ReduceAction108___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos111]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4848;
+  fra.me.line = 4846;
   fra.me.meth = LOCATE_parser___ReduceAction108___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16718,7 +16706,7 @@ void parser___ReduceAction108___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4848 */
+  /* ./parser//parser.nit:4846 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction108____goto(fra.me.REG[1]) = REGB0;
@@ -16732,7 +16720,7 @@ void parser___ReduceAction109___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4852;
+  fra.me.line = 4850;
   fra.me.meth = LOCATE_parser___ReduceAction109___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -16748,77 +16736,77 @@ void parser___ReduceAction109___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4854 */
+  /* ./parser//parser.nit:4852 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4855 */
+  /* ./parser//parser.nit:4853 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4856 */
+  /* ./parser//parser.nit:4854 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4857 */
+  /* ./parser//parser.nit:4855 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4858 */
+  /* ./parser//parser.nit:4856 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4859 */
+  /* ./parser//parser.nit:4857 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4860 */
+  /* ./parser//parser.nit:4858 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4861 */
+  /* ./parser//parser.nit:4859 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4862 */
+  /* ./parser//parser.nit:4860 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4863 */
+  /* ./parser//parser.nit:4861 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4865 */
+  /* ./parser//parser.nit:4863 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4863);
+  }
+  /* ./parser//parser.nit:4865 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4865);
   }
   /* ./parser//parser.nit:4867 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4867);
   }
   /* ./parser//parser.nit:4869 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4869);
   }
   /* ./parser//parser.nit:4871 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4871);
   }
   /* ./parser//parser.nit:4873 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4873);
   }
   /* ./parser//parser.nit:4875 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4875);
-  }
-  /* ./parser//parser.nit:4877 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4877);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4875);
   }
-  /* ./parser//parser.nit:4878 */
+  /* ./parser//parser.nit:4876 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4890 */
+  /* ./parser//parser.nit:4888 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4891 */
+  /* ./parser//parser.nit:4889 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction109____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4891);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4889);
   }
   REGB0 = ATTR_parser___ReduceAction109____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16834,7 +16822,7 @@ void parser___ReduceAction109___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos112]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4894;
+  fra.me.line = 4892;
   fra.me.meth = LOCATE_parser___ReduceAction109___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16842,7 +16830,7 @@ void parser___ReduceAction109___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4894 */
+  /* ./parser//parser.nit:4892 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction109____goto(fra.me.REG[1]) = REGB0;
@@ -16856,7 +16844,7 @@ void parser___ReduceAction110___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4898;
+  fra.me.line = 4896;
   fra.me.meth = LOCATE_parser___ReduceAction110___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -16873,85 +16861,85 @@ void parser___ReduceAction110___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4900 */
+  /* ./parser//parser.nit:4898 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4901 */
+  /* ./parser//parser.nit:4899 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4902 */
+  /* ./parser//parser.nit:4900 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4903 */
+  /* ./parser//parser.nit:4901 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4904 */
+  /* ./parser//parser.nit:4902 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4905 */
+  /* ./parser//parser.nit:4903 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4906 */
+  /* ./parser//parser.nit:4904 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4907 */
+  /* ./parser//parser.nit:4905 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4908 */
+  /* ./parser//parser.nit:4906 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4909 */
+  /* ./parser//parser.nit:4907 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4910 */
+  /* ./parser//parser.nit:4908 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4912 */
+  /* ./parser//parser.nit:4910 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4910);
+  }
+  /* ./parser//parser.nit:4912 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4912);
   }
   /* ./parser//parser.nit:4914 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4914);
   }
   /* ./parser//parser.nit:4916 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4916);
   }
   /* ./parser//parser.nit:4918 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4918);
   }
   /* ./parser//parser.nit:4920 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4920);
   }
   /* ./parser//parser.nit:4922 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4922);
   }
   /* ./parser//parser.nit:4924 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4924);
-  }
-  /* ./parser//parser.nit:4926 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4926);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4924);
   }
-  /* ./parser//parser.nit:4927 */
+  /* ./parser//parser.nit:4925 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4939 */
+  /* ./parser//parser.nit:4937 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4940 */
+  /* ./parser//parser.nit:4938 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction110____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4940);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4938);
   }
   REGB0 = ATTR_parser___ReduceAction110____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -16967,7 +16955,7 @@ void parser___ReduceAction110___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos113]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4943;
+  fra.me.line = 4941;
   fra.me.meth = LOCATE_parser___ReduceAction110___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -16975,7 +16963,7 @@ void parser___ReduceAction110___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4943 */
+  /* ./parser//parser.nit:4941 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction110____goto(fra.me.REG[1]) = REGB0;
@@ -16989,7 +16977,7 @@ void parser___ReduceAction111___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4947;
+  fra.me.line = 4945;
   fra.me.meth = LOCATE_parser___ReduceAction111___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -17006,85 +16994,85 @@ void parser___ReduceAction111___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4949 */
+  /* ./parser//parser.nit:4947 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4950 */
+  /* ./parser//parser.nit:4948 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4951 */
+  /* ./parser//parser.nit:4949 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4952 */
+  /* ./parser//parser.nit:4950 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4953 */
+  /* ./parser//parser.nit:4951 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4954 */
+  /* ./parser//parser.nit:4952 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4955 */
+  /* ./parser//parser.nit:4953 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4956 */
+  /* ./parser//parser.nit:4954 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4957 */
+  /* ./parser//parser.nit:4955 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4958 */
+  /* ./parser//parser.nit:4956 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4959 */
+  /* ./parser//parser.nit:4957 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:4961 */
+  /* ./parser//parser.nit:4959 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4959);
+  }
+  /* ./parser//parser.nit:4961 */
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4961);
   }
   /* ./parser//parser.nit:4963 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4963);
   }
   /* ./parser//parser.nit:4965 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4965);
   }
   /* ./parser//parser.nit:4967 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4967);
   }
   /* ./parser//parser.nit:4969 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4969);
   }
   /* ./parser//parser.nit:4971 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 4971);
   }
   /* ./parser//parser.nit:4973 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4973);
-  }
-  /* ./parser//parser.nit:4975 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 4975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 4973);
   }
-  /* ./parser//parser.nit:4976 */
+  /* ./parser//parser.nit:4974 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:4988 */
+  /* ./parser//parser.nit:4986 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:4989 */
+  /* ./parser//parser.nit:4987 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction111____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4989);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 4987);
   }
   REGB0 = ATTR_parser___ReduceAction111____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17100,7 +17088,7 @@ void parser___ReduceAction111___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos114]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4992;
+  fra.me.line = 4990;
   fra.me.meth = LOCATE_parser___ReduceAction111___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17108,7 +17096,7 @@ void parser___ReduceAction111___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:4992 */
+  /* ./parser//parser.nit:4990 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction111____goto(fra.me.REG[1]) = REGB0;
@@ -17122,7 +17110,7 @@ void parser___ReduceAction112___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 4996;
+  fra.me.line = 4994;
   fra.me.meth = LOCATE_parser___ReduceAction112___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -17140,93 +17128,93 @@ void parser___ReduceAction112___action(val_t p0, val_t p1){
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:4998 */
+  /* ./parser//parser.nit:4996 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:4999 */
+  /* ./parser//parser.nit:4997 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5000 */
+  /* ./parser//parser.nit:4998 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5001 */
+  /* ./parser//parser.nit:4999 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5002 */
+  /* ./parser//parser.nit:5000 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5003 */
+  /* ./parser//parser.nit:5001 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5004 */
+  /* ./parser//parser.nit:5002 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5005 */
+  /* ./parser//parser.nit:5003 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5006 */
+  /* ./parser//parser.nit:5004 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5007 */
+  /* ./parser//parser.nit:5005 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5008 */
+  /* ./parser//parser.nit:5006 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5009 */
+  /* ./parser//parser.nit:5007 */
   fra.me.REG[11] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5011 */
+  /* ./parser//parser.nit:5009 */
   REGB0 = TAG_Bool((fra.me.REG[11]==NIT_NULL) || VAL_ISA(fra.me.REG[11], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5009);
+  }
+  /* ./parser//parser.nit:5011 */
+  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5011);
   }
   /* ./parser//parser.nit:5013 */
-  REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5013);
   }
   /* ./parser//parser.nit:5015 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5015);
   }
   /* ./parser//parser.nit:5017 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5017);
   }
   /* ./parser//parser.nit:5019 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5019);
   }
   /* ./parser//parser.nit:5021 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5021);
   }
   /* ./parser//parser.nit:5023 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5023);
   }
   /* ./parser//parser.nit:5025 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5025);
-  }
-  /* ./parser//parser.nit:5027 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5027);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5025);
   }
-  /* ./parser//parser.nit:5028 */
+  /* ./parser//parser.nit:5026 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[11], fra.me.REG[10], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5040 */
+  /* ./parser//parser.nit:5038 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5041 */
+  /* ./parser//parser.nit:5039 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction112____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5041);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5039);
   }
   REGB0 = ATTR_parser___ReduceAction112____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17242,7 +17230,7 @@ void parser___ReduceAction112___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos115]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5044;
+  fra.me.line = 5042;
   fra.me.meth = LOCATE_parser___ReduceAction112___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17250,7 +17238,7 @@ void parser___ReduceAction112___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5044 */
+  /* ./parser//parser.nit:5042 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction112____goto(fra.me.REG[1]) = REGB0;
@@ -17264,7 +17252,7 @@ void parser___ReduceAction113___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5048;
+  fra.me.line = 5046;
   fra.me.meth = LOCATE_parser___ReduceAction113___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -17277,49 +17265,49 @@ void parser___ReduceAction113___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5050 */
+  /* ./parser//parser.nit:5048 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5051 */
+  /* ./parser//parser.nit:5049 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5052 */
+  /* ./parser//parser.nit:5050 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5053 */
+  /* ./parser//parser.nit:5051 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5054 */
+  /* ./parser//parser.nit:5052 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5056 */
+  /* ./parser//parser.nit:5054 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5056);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5054);
   }
-  /* ./parser//parser.nit:5058 */
+  /* ./parser//parser.nit:5056 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5058);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5056);
   }
-  /* ./parser//parser.nit:5060 */
+  /* ./parser//parser.nit:5058 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5060);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5058);
   }
-  /* ./parser//parser.nit:5062 */
+  /* ./parser//parser.nit:5060 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5062);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5060);
   }
-  /* ./parser//parser.nit:5063 */
+  /* ./parser//parser.nit:5061 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[6], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:5075 */
+  /* ./parser//parser.nit:5073 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5076 */
+  /* ./parser//parser.nit:5074 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction113____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5076);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5074);
   }
   REGB0 = ATTR_parser___ReduceAction113____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17335,7 +17323,7 @@ void parser___ReduceAction113___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos116]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5079;
+  fra.me.line = 5077;
   fra.me.meth = LOCATE_parser___ReduceAction113___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17343,7 +17331,7 @@ void parser___ReduceAction113___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5079 */
+  /* ./parser//parser.nit:5077 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction113____goto(fra.me.REG[1]) = REGB0;
@@ -17357,7 +17345,7 @@ void parser___ReduceAction114___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5083;
+  fra.me.line = 5081;
   fra.me.meth = LOCATE_parser___ReduceAction114___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -17371,57 +17359,57 @@ void parser___ReduceAction114___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5085 */
+  /* ./parser//parser.nit:5083 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5086 */
+  /* ./parser//parser.nit:5084 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5087 */
+  /* ./parser//parser.nit:5085 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5088 */
+  /* ./parser//parser.nit:5086 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5089 */
+  /* ./parser//parser.nit:5087 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5090 */
+  /* ./parser//parser.nit:5088 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5092 */
+  /* ./parser//parser.nit:5090 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5092);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5090);
   }
-  /* ./parser//parser.nit:5094 */
+  /* ./parser//parser.nit:5092 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5094);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5092);
   }
-  /* ./parser//parser.nit:5096 */
+  /* ./parser//parser.nit:5094 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5096);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5094);
   }
-  /* ./parser//parser.nit:5098 */
+  /* ./parser//parser.nit:5096 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5098);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5096);
   }
-  /* ./parser//parser.nit:5100 */
+  /* ./parser//parser.nit:5098 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5100);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5098);
   }
-  /* ./parser//parser.nit:5101 */
+  /* ./parser//parser.nit:5099 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:5113 */
+  /* ./parser//parser.nit:5111 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5114 */
+  /* ./parser//parser.nit:5112 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction114____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5114);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5112);
   }
   REGB0 = ATTR_parser___ReduceAction114____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17437,7 +17425,7 @@ void parser___ReduceAction114___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos117]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5117;
+  fra.me.line = 5115;
   fra.me.meth = LOCATE_parser___ReduceAction114___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17445,7 +17433,7 @@ void parser___ReduceAction114___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5117 */
+  /* ./parser//parser.nit:5115 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction114____goto(fra.me.REG[1]) = REGB0;
@@ -17459,7 +17447,7 @@ void parser___ReduceAction115___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5121;
+  fra.me.line = 5119;
   fra.me.meth = LOCATE_parser___ReduceAction115___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -17473,57 +17461,57 @@ void parser___ReduceAction115___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5123 */
+  /* ./parser//parser.nit:5121 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5124 */
+  /* ./parser//parser.nit:5122 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5125 */
+  /* ./parser//parser.nit:5123 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5126 */
+  /* ./parser//parser.nit:5124 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5127 */
+  /* ./parser//parser.nit:5125 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5128 */
+  /* ./parser//parser.nit:5126 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5130 */
+  /* ./parser//parser.nit:5128 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5130);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5128);
   }
-  /* ./parser//parser.nit:5132 */
+  /* ./parser//parser.nit:5130 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5130);
   }
-  /* ./parser//parser.nit:5134 */
+  /* ./parser//parser.nit:5132 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5132);
   }
-  /* ./parser//parser.nit:5136 */
+  /* ./parser//parser.nit:5134 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5136);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5134);
   }
-  /* ./parser//parser.nit:5138 */
+  /* ./parser//parser.nit:5136 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5138);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5136);
   }
-  /* ./parser//parser.nit:5139 */
+  /* ./parser//parser.nit:5137 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:5151 */
+  /* ./parser//parser.nit:5149 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5152 */
+  /* ./parser//parser.nit:5150 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction115____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5152);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5150);
   }
   REGB0 = ATTR_parser___ReduceAction115____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17539,7 +17527,7 @@ void parser___ReduceAction115___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos118]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5155;
+  fra.me.line = 5153;
   fra.me.meth = LOCATE_parser___ReduceAction115___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17547,7 +17535,7 @@ void parser___ReduceAction115___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5155 */
+  /* ./parser//parser.nit:5153 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction115____goto(fra.me.REG[1]) = REGB0;
@@ -17561,7 +17549,7 @@ void parser___ReduceAction116___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5159;
+  fra.me.line = 5157;
   fra.me.meth = LOCATE_parser___ReduceAction116___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -17576,65 +17564,65 @@ void parser___ReduceAction116___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5161 */
+  /* ./parser//parser.nit:5159 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5162 */
+  /* ./parser//parser.nit:5160 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5163 */
+  /* ./parser//parser.nit:5161 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5164 */
+  /* ./parser//parser.nit:5162 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5165 */
+  /* ./parser//parser.nit:5163 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5166 */
+  /* ./parser//parser.nit:5164 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5167 */
+  /* ./parser//parser.nit:5165 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5169 */
+  /* ./parser//parser.nit:5167 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5167);
+  }
+  /* ./parser//parser.nit:5169 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5169);
   }
   /* ./parser//parser.nit:5171 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5171);
   }
   /* ./parser//parser.nit:5173 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5173);
   }
   /* ./parser//parser.nit:5175 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5175);
   }
   /* ./parser//parser.nit:5177 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5177);
-  }
-  /* ./parser//parser.nit:5179 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5179);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5177);
   }
-  /* ./parser//parser.nit:5180 */
+  /* ./parser//parser.nit:5178 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:5192 */
+  /* ./parser//parser.nit:5190 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5193 */
+  /* ./parser//parser.nit:5191 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction116____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5193);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5191);
   }
   REGB0 = ATTR_parser___ReduceAction116____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17650,7 +17638,7 @@ void parser___ReduceAction116___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos119]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5196;
+  fra.me.line = 5194;
   fra.me.meth = LOCATE_parser___ReduceAction116___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17658,7 +17646,7 @@ void parser___ReduceAction116___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5196 */
+  /* ./parser//parser.nit:5194 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction116____goto(fra.me.REG[1]) = REGB0;
@@ -17672,7 +17660,7 @@ void parser___ReduceAction117___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5200;
+  fra.me.line = 5198;
   fra.me.meth = LOCATE_parser___ReduceAction117___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -17686,57 +17674,57 @@ void parser___ReduceAction117___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5202 */
+  /* ./parser//parser.nit:5200 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5203 */
+  /* ./parser//parser.nit:5201 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5204 */
+  /* ./parser//parser.nit:5202 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5205 */
+  /* ./parser//parser.nit:5203 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5206 */
+  /* ./parser//parser.nit:5204 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5207 */
+  /* ./parser//parser.nit:5205 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5209 */
+  /* ./parser//parser.nit:5207 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5209);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5207);
   }
-  /* ./parser//parser.nit:5211 */
+  /* ./parser//parser.nit:5209 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5211);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5209);
   }
-  /* ./parser//parser.nit:5213 */
+  /* ./parser//parser.nit:5211 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5213);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5211);
   }
-  /* ./parser//parser.nit:5215 */
+  /* ./parser//parser.nit:5213 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5215);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5213);
   }
-  /* ./parser//parser.nit:5217 */
+  /* ./parser//parser.nit:5215 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5217);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5215);
   }
-  /* ./parser//parser.nit:5218 */
+  /* ./parser//parser.nit:5216 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:5230 */
+  /* ./parser//parser.nit:5228 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:5231 */
+  /* ./parser//parser.nit:5229 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction117____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5231);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5229);
   }
   REGB0 = ATTR_parser___ReduceAction117____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17752,7 +17740,7 @@ void parser___ReduceAction117___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos120]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5234;
+  fra.me.line = 5232;
   fra.me.meth = LOCATE_parser___ReduceAction117___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17760,7 +17748,7 @@ void parser___ReduceAction117___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5234 */
+  /* ./parser//parser.nit:5232 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction117____goto(fra.me.REG[1]) = REGB0;
@@ -17774,7 +17762,7 @@ void parser___ReduceAction118___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5238;
+  fra.me.line = 5236;
   fra.me.meth = LOCATE_parser___ReduceAction118___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -17789,65 +17777,65 @@ void parser___ReduceAction118___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5240 */
+  /* ./parser//parser.nit:5238 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5241 */
+  /* ./parser//parser.nit:5239 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5242 */
+  /* ./parser//parser.nit:5240 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5243 */
+  /* ./parser//parser.nit:5241 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5244 */
+  /* ./parser//parser.nit:5242 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5245 */
+  /* ./parser//parser.nit:5243 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5246 */
+  /* ./parser//parser.nit:5244 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5248 */
+  /* ./parser//parser.nit:5246 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5246);
+  }
+  /* ./parser//parser.nit:5248 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5248);
   }
   /* ./parser//parser.nit:5250 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5250);
   }
   /* ./parser//parser.nit:5252 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5252);
   }
   /* ./parser//parser.nit:5254 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5254);
   }
   /* ./parser//parser.nit:5256 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5256);
-  }
-  /* ./parser//parser.nit:5258 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5258);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5256);
   }
-  /* ./parser//parser.nit:5259 */
+  /* ./parser//parser.nit:5257 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:5271 */
+  /* ./parser//parser.nit:5269 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:5272 */
+  /* ./parser//parser.nit:5270 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction118____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5272);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5270);
   }
   REGB0 = ATTR_parser___ReduceAction118____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17863,7 +17851,7 @@ void parser___ReduceAction118___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos121]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5275;
+  fra.me.line = 5273;
   fra.me.meth = LOCATE_parser___ReduceAction118___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17871,7 +17859,7 @@ void parser___ReduceAction118___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5275 */
+  /* ./parser//parser.nit:5273 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction118____goto(fra.me.REG[1]) = REGB0;
@@ -17885,7 +17873,7 @@ void parser___ReduceAction119___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5279;
+  fra.me.line = 5277;
   fra.me.meth = LOCATE_parser___ReduceAction119___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -17900,65 +17888,65 @@ void parser___ReduceAction119___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5281 */
+  /* ./parser//parser.nit:5279 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5282 */
+  /* ./parser//parser.nit:5280 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5283 */
+  /* ./parser//parser.nit:5281 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5284 */
+  /* ./parser//parser.nit:5282 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5285 */
+  /* ./parser//parser.nit:5283 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5286 */
+  /* ./parser//parser.nit:5284 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5287 */
+  /* ./parser//parser.nit:5285 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5289 */
+  /* ./parser//parser.nit:5287 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5287);
+  }
+  /* ./parser//parser.nit:5289 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5289);
   }
   /* ./parser//parser.nit:5291 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5291);
   }
   /* ./parser//parser.nit:5293 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5293);
   }
   /* ./parser//parser.nit:5295 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5295);
   }
   /* ./parser//parser.nit:5297 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5297);
-  }
-  /* ./parser//parser.nit:5299 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5299);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5297);
   }
-  /* ./parser//parser.nit:5300 */
+  /* ./parser//parser.nit:5298 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[3], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL);
-  /* ./parser//parser.nit:5312 */
+  /* ./parser//parser.nit:5310 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:5313 */
+  /* ./parser//parser.nit:5311 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction119____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5313);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5311);
   }
   REGB0 = ATTR_parser___ReduceAction119____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -17974,7 +17962,7 @@ void parser___ReduceAction119___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos122]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5316;
+  fra.me.line = 5314;
   fra.me.meth = LOCATE_parser___ReduceAction119___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -17982,7 +17970,7 @@ void parser___ReduceAction119___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5316 */
+  /* ./parser//parser.nit:5314 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction119____goto(fra.me.REG[1]) = REGB0;
@@ -17996,7 +17984,7 @@ void parser___ReduceAction120___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5320;
+  fra.me.line = 5318;
   fra.me.meth = LOCATE_parser___ReduceAction120___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -18012,73 +18000,73 @@ void parser___ReduceAction120___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5322 */
+  /* ./parser//parser.nit:5320 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5323 */
+  /* ./parser//parser.nit:5321 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5324 */
+  /* ./parser//parser.nit:5322 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5325 */
+  /* ./parser//parser.nit:5323 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5326 */
+  /* ./parser//parser.nit:5324 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5327 */
+  /* ./parser//parser.nit:5325 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5328 */
+  /* ./parser//parser.nit:5326 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5329 */
+  /* ./parser//parser.nit:5327 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5331 */
+  /* ./parser//parser.nit:5329 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5329);
+  }
+  /* ./parser//parser.nit:5331 */
+  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5331);
   }
   /* ./parser//parser.nit:5333 */
-  REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5333);
   }
   /* ./parser//parser.nit:5335 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5335);
   }
   /* ./parser//parser.nit:5337 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5337);
   }
   /* ./parser//parser.nit:5339 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5339);
   }
   /* ./parser//parser.nit:5341 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5341);
-  }
-  /* ./parser//parser.nit:5343 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5343);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5341);
   }
-  /* ./parser//parser.nit:5344 */
+  /* ./parser//parser.nit:5342 */
   fra.me.REG[4] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[3], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], NIT_NULL);
-  /* ./parser//parser.nit:5356 */
+  /* ./parser//parser.nit:5354 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:5357 */
+  /* ./parser//parser.nit:5355 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction120____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5357);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5355);
   }
   REGB0 = ATTR_parser___ReduceAction120____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18094,7 +18082,7 @@ void parser___ReduceAction120___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos123]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5360;
+  fra.me.line = 5358;
   fra.me.meth = LOCATE_parser___ReduceAction120___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18102,7 +18090,7 @@ void parser___ReduceAction120___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5360 */
+  /* ./parser//parser.nit:5358 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction120____goto(fra.me.REG[1]) = REGB0;
@@ -18116,7 +18104,7 @@ void parser___ReduceAction121___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5364;
+  fra.me.line = 5362;
   fra.me.meth = LOCATE_parser___ReduceAction121___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -18130,61 +18118,61 @@ void parser___ReduceAction121___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5366 */
+  /* ./parser//parser.nit:5364 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5367 */
+  /* ./parser//parser.nit:5365 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5368 */
+  /* ./parser//parser.nit:5366 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5369 */
+  /* ./parser//parser.nit:5367 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5370 */
+  /* ./parser//parser.nit:5368 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5371 */
+  /* ./parser//parser.nit:5369 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5372 */
+  /* ./parser//parser.nit:5370 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5373 */
+  /* ./parser//parser.nit:5371 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5375 */
+  /* ./parser//parser.nit:5373 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5375);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5373);
   }
-  /* ./parser//parser.nit:5377 */
+  /* ./parser//parser.nit:5375 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5377);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5375);
   }
-  /* ./parser//parser.nit:5379 */
+  /* ./parser//parser.nit:5377 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5379);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5377);
   }
-  /* ./parser//parser.nit:5381 */
+  /* ./parser//parser.nit:5379 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5381);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5379);
   }
-  /* ./parser//parser.nit:5383 */
+  /* ./parser//parser.nit:5381 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5383);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5381);
   }
-  /* ./parser//parser.nit:5384 */
+  /* ./parser//parser.nit:5382 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[7], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:5396 */
+  /* ./parser//parser.nit:5394 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5397 */
+  /* ./parser//parser.nit:5395 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction121____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5397);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5395);
   }
   REGB0 = ATTR_parser___ReduceAction121____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18200,7 +18188,7 @@ void parser___ReduceAction121___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos124]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5400;
+  fra.me.line = 5398;
   fra.me.meth = LOCATE_parser___ReduceAction121___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18208,7 +18196,7 @@ void parser___ReduceAction121___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5400 */
+  /* ./parser//parser.nit:5398 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction121____goto(fra.me.REG[1]) = REGB0;
@@ -18222,7 +18210,7 @@ void parser___ReduceAction122___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5404;
+  fra.me.line = 5402;
   fra.me.meth = LOCATE_parser___ReduceAction122___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -18237,69 +18225,69 @@ void parser___ReduceAction122___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5406 */
+  /* ./parser//parser.nit:5404 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5407 */
+  /* ./parser//parser.nit:5405 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5408 */
+  /* ./parser//parser.nit:5406 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5409 */
+  /* ./parser//parser.nit:5407 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5410 */
+  /* ./parser//parser.nit:5408 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5411 */
+  /* ./parser//parser.nit:5409 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5412 */
+  /* ./parser//parser.nit:5410 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5413 */
+  /* ./parser//parser.nit:5411 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5414 */
+  /* ./parser//parser.nit:5412 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5416 */
+  /* ./parser//parser.nit:5414 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5414);
+  }
+  /* ./parser//parser.nit:5416 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5416);
   }
   /* ./parser//parser.nit:5418 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5418);
   }
   /* ./parser//parser.nit:5420 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5420);
   }
   /* ./parser//parser.nit:5422 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5422);
   }
   /* ./parser//parser.nit:5424 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5424);
-  }
-  /* ./parser//parser.nit:5426 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5426);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5424);
   }
-  /* ./parser//parser.nit:5427 */
+  /* ./parser//parser.nit:5425 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:5439 */
+  /* ./parser//parser.nit:5437 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5440 */
+  /* ./parser//parser.nit:5438 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction122____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5440);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5438);
   }
   REGB0 = ATTR_parser___ReduceAction122____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18315,7 +18303,7 @@ void parser___ReduceAction122___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos125]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5443;
+  fra.me.line = 5441;
   fra.me.meth = LOCATE_parser___ReduceAction122___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18323,7 +18311,7 @@ void parser___ReduceAction122___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5443 */
+  /* ./parser//parser.nit:5441 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction122____goto(fra.me.REG[1]) = REGB0;
@@ -18337,7 +18325,7 @@ void parser___ReduceAction123___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5447;
+  fra.me.line = 5445;
   fra.me.meth = LOCATE_parser___ReduceAction123___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -18352,69 +18340,69 @@ void parser___ReduceAction123___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5449 */
+  /* ./parser//parser.nit:5447 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5450 */
+  /* ./parser//parser.nit:5448 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5451 */
+  /* ./parser//parser.nit:5449 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5452 */
+  /* ./parser//parser.nit:5450 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5453 */
+  /* ./parser//parser.nit:5451 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5454 */
+  /* ./parser//parser.nit:5452 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5455 */
+  /* ./parser//parser.nit:5453 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5456 */
+  /* ./parser//parser.nit:5454 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5457 */
+  /* ./parser//parser.nit:5455 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5459 */
+  /* ./parser//parser.nit:5457 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5457);
+  }
+  /* ./parser//parser.nit:5459 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5459);
   }
   /* ./parser//parser.nit:5461 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5461);
   }
   /* ./parser//parser.nit:5463 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5463);
   }
   /* ./parser//parser.nit:5465 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5465);
   }
   /* ./parser//parser.nit:5467 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5467);
-  }
-  /* ./parser//parser.nit:5469 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5469);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5467);
   }
-  /* ./parser//parser.nit:5470 */
+  /* ./parser//parser.nit:5468 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, NIT_NULL, NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5482 */
+  /* ./parser//parser.nit:5480 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5483 */
+  /* ./parser//parser.nit:5481 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction123____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5483);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5481);
   }
   REGB0 = ATTR_parser___ReduceAction123____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18430,7 +18418,7 @@ void parser___ReduceAction123___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos126]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5486;
+  fra.me.line = 5484;
   fra.me.meth = LOCATE_parser___ReduceAction123___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18438,7 +18426,7 @@ void parser___ReduceAction123___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5486 */
+  /* ./parser//parser.nit:5484 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction123____goto(fra.me.REG[1]) = REGB0;
@@ -18452,7 +18440,7 @@ void parser___ReduceAction124___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5490;
+  fra.me.line = 5488;
   fra.me.meth = LOCATE_parser___ReduceAction124___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -18468,77 +18456,77 @@ void parser___ReduceAction124___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5492 */
+  /* ./parser//parser.nit:5490 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5493 */
+  /* ./parser//parser.nit:5491 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5494 */
+  /* ./parser//parser.nit:5492 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5495 */
+  /* ./parser//parser.nit:5493 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5496 */
+  /* ./parser//parser.nit:5494 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5497 */
+  /* ./parser//parser.nit:5495 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5498 */
+  /* ./parser//parser.nit:5496 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5499 */
+  /* ./parser//parser.nit:5497 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5500 */
+  /* ./parser//parser.nit:5498 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5501 */
+  /* ./parser//parser.nit:5499 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5503 */
+  /* ./parser//parser.nit:5501 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5501);
+  }
+  /* ./parser//parser.nit:5503 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5503);
   }
   /* ./parser//parser.nit:5505 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5505);
   }
   /* ./parser//parser.nit:5507 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5507);
   }
   /* ./parser//parser.nit:5509 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5509);
   }
   /* ./parser//parser.nit:5511 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5511);
   }
   /* ./parser//parser.nit:5513 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5513);
-  }
-  /* ./parser//parser.nit:5515 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5515);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5513);
   }
-  /* ./parser//parser.nit:5516 */
+  /* ./parser//parser.nit:5514 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, NIT_NULL, fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5528 */
+  /* ./parser//parser.nit:5526 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5529 */
+  /* ./parser//parser.nit:5527 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction124____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5529);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5527);
   }
   REGB0 = ATTR_parser___ReduceAction124____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18554,7 +18542,7 @@ void parser___ReduceAction124___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos127]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5532;
+  fra.me.line = 5530;
   fra.me.meth = LOCATE_parser___ReduceAction124___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18562,7 +18550,7 @@ void parser___ReduceAction124___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5532 */
+  /* ./parser//parser.nit:5530 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction124____goto(fra.me.REG[1]) = REGB0;
@@ -18576,7 +18564,7 @@ void parser___ReduceAction125___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5536;
+  fra.me.line = 5534;
   fra.me.meth = LOCATE_parser___ReduceAction125___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -18591,69 +18579,69 @@ void parser___ReduceAction125___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5538 */
+  /* ./parser//parser.nit:5536 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5539 */
+  /* ./parser//parser.nit:5537 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5540 */
+  /* ./parser//parser.nit:5538 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5541 */
+  /* ./parser//parser.nit:5539 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5542 */
+  /* ./parser//parser.nit:5540 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5543 */
+  /* ./parser//parser.nit:5541 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5544 */
+  /* ./parser//parser.nit:5542 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5545 */
+  /* ./parser//parser.nit:5543 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5546 */
+  /* ./parser//parser.nit:5544 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5548 */
+  /* ./parser//parser.nit:5546 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5546);
+  }
+  /* ./parser//parser.nit:5548 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5548);
   }
   /* ./parser//parser.nit:5550 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5550);
   }
   /* ./parser//parser.nit:5552 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5552);
   }
   /* ./parser//parser.nit:5554 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5554);
   }
   /* ./parser//parser.nit:5556 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5556);
-  }
-  /* ./parser//parser.nit:5558 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5558);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5556);
   }
-  /* ./parser//parser.nit:5559 */
+  /* ./parser//parser.nit:5557 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:5571 */
+  /* ./parser//parser.nit:5569 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5572 */
+  /* ./parser//parser.nit:5570 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction125____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5572);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5570);
   }
   REGB0 = ATTR_parser___ReduceAction125____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18669,7 +18657,7 @@ void parser___ReduceAction125___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos128]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5575;
+  fra.me.line = 5573;
   fra.me.meth = LOCATE_parser___ReduceAction125___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18677,7 +18665,7 @@ void parser___ReduceAction125___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5575 */
+  /* ./parser//parser.nit:5573 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction125____goto(fra.me.REG[1]) = REGB0;
@@ -18691,7 +18679,7 @@ void parser___ReduceAction126___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5579;
+  fra.me.line = 5577;
   fra.me.meth = LOCATE_parser___ReduceAction126___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -18707,77 +18695,77 @@ void parser___ReduceAction126___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5581 */
+  /* ./parser//parser.nit:5579 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5582 */
+  /* ./parser//parser.nit:5580 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5583 */
+  /* ./parser//parser.nit:5581 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5584 */
+  /* ./parser//parser.nit:5582 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5585 */
+  /* ./parser//parser.nit:5583 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5586 */
+  /* ./parser//parser.nit:5584 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5587 */
+  /* ./parser//parser.nit:5585 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5588 */
+  /* ./parser//parser.nit:5586 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5589 */
+  /* ./parser//parser.nit:5587 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5590 */
+  /* ./parser//parser.nit:5588 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5592 */
+  /* ./parser//parser.nit:5590 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5590);
+  }
+  /* ./parser//parser.nit:5592 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5592);
   }
   /* ./parser//parser.nit:5594 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5594);
   }
   /* ./parser//parser.nit:5596 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5596);
   }
   /* ./parser//parser.nit:5598 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5598);
   }
   /* ./parser//parser.nit:5600 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5600);
   }
   /* ./parser//parser.nit:5602 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5602);
-  }
-  /* ./parser//parser.nit:5604 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5604);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5602);
   }
-  /* ./parser//parser.nit:5605 */
+  /* ./parser//parser.nit:5603 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:5617 */
+  /* ./parser//parser.nit:5615 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5618 */
+  /* ./parser//parser.nit:5616 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction126____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5618);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5616);
   }
   REGB0 = ATTR_parser___ReduceAction126____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18793,7 +18781,7 @@ void parser___ReduceAction126___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos129]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5621;
+  fra.me.line = 5619;
   fra.me.meth = LOCATE_parser___ReduceAction126___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18801,7 +18789,7 @@ void parser___ReduceAction126___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5621 */
+  /* ./parser//parser.nit:5619 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction126____goto(fra.me.REG[1]) = REGB0;
@@ -18815,7 +18803,7 @@ void parser___ReduceAction127___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5625;
+  fra.me.line = 5623;
   fra.me.meth = LOCATE_parser___ReduceAction127___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -18831,77 +18819,77 @@ void parser___ReduceAction127___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5627 */
+  /* ./parser//parser.nit:5625 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5628 */
+  /* ./parser//parser.nit:5626 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5629 */
+  /* ./parser//parser.nit:5627 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5630 */
+  /* ./parser//parser.nit:5628 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5631 */
+  /* ./parser//parser.nit:5629 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5632 */
+  /* ./parser//parser.nit:5630 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5633 */
+  /* ./parser//parser.nit:5631 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5634 */
+  /* ./parser//parser.nit:5632 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5635 */
+  /* ./parser//parser.nit:5633 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5636 */
+  /* ./parser//parser.nit:5634 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5638 */
+  /* ./parser//parser.nit:5636 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5636);
+  }
+  /* ./parser//parser.nit:5638 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5638);
   }
   /* ./parser//parser.nit:5640 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5640);
   }
   /* ./parser//parser.nit:5642 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5642);
   }
   /* ./parser//parser.nit:5644 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5644);
   }
   /* ./parser//parser.nit:5646 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5646);
   }
   /* ./parser//parser.nit:5648 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5648);
-  }
-  /* ./parser//parser.nit:5650 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5650);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5648);
   }
-  /* ./parser//parser.nit:5651 */
+  /* ./parser//parser.nit:5649 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[9], NIT_NULL, fra.me.REG[4], NIT_NULL, fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3]);
-  /* ./parser//parser.nit:5663 */
+  /* ./parser//parser.nit:5661 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5664 */
+  /* ./parser//parser.nit:5662 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction127____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5664);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5662);
   }
   REGB0 = ATTR_parser___ReduceAction127____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -18917,7 +18905,7 @@ void parser___ReduceAction127___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos130]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5667;
+  fra.me.line = 5665;
   fra.me.meth = LOCATE_parser___ReduceAction127___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18925,7 +18913,7 @@ void parser___ReduceAction127___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5667 */
+  /* ./parser//parser.nit:5665 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction127____goto(fra.me.REG[1]) = REGB0;
@@ -18939,7 +18927,7 @@ void parser___ReduceAction128___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5671;
+  fra.me.line = 5669;
   fra.me.meth = LOCATE_parser___ReduceAction128___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -18956,85 +18944,85 @@ void parser___ReduceAction128___action(val_t p0, val_t p1){
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5673 */
+  /* ./parser//parser.nit:5671 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5674 */
+  /* ./parser//parser.nit:5672 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5675 */
+  /* ./parser//parser.nit:5673 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5676 */
+  /* ./parser//parser.nit:5674 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5677 */
+  /* ./parser//parser.nit:5675 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5678 */
+  /* ./parser//parser.nit:5676 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5679 */
+  /* ./parser//parser.nit:5677 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5680 */
+  /* ./parser//parser.nit:5678 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5681 */
+  /* ./parser//parser.nit:5679 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5682 */
+  /* ./parser//parser.nit:5680 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5683 */
+  /* ./parser//parser.nit:5681 */
   fra.me.REG[10] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5685 */
+  /* ./parser//parser.nit:5683 */
   REGB0 = TAG_Bool((fra.me.REG[10]==NIT_NULL) || VAL_ISA(fra.me.REG[10], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5683);
+  }
+  /* ./parser//parser.nit:5685 */
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5685);
   }
   /* ./parser//parser.nit:5687 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAble, ID_AAble)) /*cast nullable AAble*/;
+  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5687);
   }
   /* ./parser//parser.nit:5689 */
-  REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5689);
   }
   /* ./parser//parser.nit:5691 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5691);
   }
   /* ./parser//parser.nit:5693 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5693);
   }
   /* ./parser//parser.nit:5695 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5695);
   }
   /* ./parser//parser.nit:5697 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5697);
-  }
-  /* ./parser//parser.nit:5699 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5699);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5697);
   }
-  /* ./parser//parser.nit:5700 */
+  /* ./parser//parser.nit:5698 */
   fra.me.REG[3] = NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], NIT_NULL, fra.me.REG[4], fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[3]);
-  /* ./parser//parser.nit:5712 */
+  /* ./parser//parser.nit:5710 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5713 */
+  /* ./parser//parser.nit:5711 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction128____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5713);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5711);
   }
   REGB0 = ATTR_parser___ReduceAction128____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19050,7 +19038,7 @@ void parser___ReduceAction128___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos131]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5716;
+  fra.me.line = 5714;
   fra.me.meth = LOCATE_parser___ReduceAction128___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19058,7 +19046,7 @@ void parser___ReduceAction128___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5716 */
+  /* ./parser//parser.nit:5714 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction128____goto(fra.me.REG[1]) = REGB0;
@@ -19072,7 +19060,7 @@ void parser___ReduceAction129___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5720;
+  fra.me.line = 5718;
   fra.me.meth = LOCATE_parser___ReduceAction129___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -19086,59 +19074,59 @@ void parser___ReduceAction129___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5722 */
+  /* ./parser//parser.nit:5720 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5723 */
+  /* ./parser//parser.nit:5721 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5724 */
+  /* ./parser//parser.nit:5722 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5725 */
+  /* ./parser//parser.nit:5723 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5726 */
+  /* ./parser//parser.nit:5724 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5727 */
+  /* ./parser//parser.nit:5725 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5728 */
+  /* ./parser//parser.nit:5726 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5730 */
+  /* ./parser//parser.nit:5728 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5730);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5728);
   }
-  /* ./parser//parser.nit:5732 */
+  /* ./parser//parser.nit:5730 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5732);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5730);
   }
-  /* ./parser//parser.nit:5734 */
+  /* ./parser//parser.nit:5732 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5734);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5732);
   }
-  /* ./parser//parser.nit:5736 */
+  /* ./parser//parser.nit:5734 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5736);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5734);
   }
-  /* ./parser//parser.nit:5738 */
+  /* ./parser//parser.nit:5736 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5738);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5736);
   }
-  /* ./parser//parser.nit:5739 */
+  /* ./parser//parser.nit:5737 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5748 */
+  /* ./parser//parser.nit:5746 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5749 */
+  /* ./parser//parser.nit:5747 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction129____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5749);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5747);
   }
   REGB0 = ATTR_parser___ReduceAction129____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19154,7 +19142,7 @@ void parser___ReduceAction129___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos132]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5752;
+  fra.me.line = 5750;
   fra.me.meth = LOCATE_parser___ReduceAction129___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19162,7 +19150,7 @@ void parser___ReduceAction129___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5752 */
+  /* ./parser//parser.nit:5750 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction129____goto(fra.me.REG[1]) = REGB0;
@@ -19176,7 +19164,7 @@ void parser___ReduceAction130___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5756;
+  fra.me.line = 5754;
   fra.me.meth = LOCATE_parser___ReduceAction130___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -19191,67 +19179,67 @@ void parser___ReduceAction130___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5758 */
+  /* ./parser//parser.nit:5756 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5759 */
+  /* ./parser//parser.nit:5757 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5760 */
+  /* ./parser//parser.nit:5758 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5761 */
+  /* ./parser//parser.nit:5759 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5762 */
+  /* ./parser//parser.nit:5760 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5763 */
+  /* ./parser//parser.nit:5761 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5764 */
+  /* ./parser//parser.nit:5762 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5765 */
+  /* ./parser//parser.nit:5763 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5767 */
+  /* ./parser//parser.nit:5765 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5765);
+  }
+  /* ./parser//parser.nit:5767 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5767);
   }
   /* ./parser//parser.nit:5769 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5769);
   }
   /* ./parser//parser.nit:5771 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5771);
   }
   /* ./parser//parser.nit:5773 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5773);
   }
   /* ./parser//parser.nit:5775 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5775);
-  }
-  /* ./parser//parser.nit:5777 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5777);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5775);
   }
-  /* ./parser//parser.nit:5778 */
+  /* ./parser//parser.nit:5776 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5787 */
+  /* ./parser//parser.nit:5785 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5788 */
+  /* ./parser//parser.nit:5786 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction130____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5788);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5786);
   }
   REGB0 = ATTR_parser___ReduceAction130____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19267,7 +19255,7 @@ void parser___ReduceAction130___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos133]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5791;
+  fra.me.line = 5789;
   fra.me.meth = LOCATE_parser___ReduceAction130___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19275,7 +19263,7 @@ void parser___ReduceAction130___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5791 */
+  /* ./parser//parser.nit:5789 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction130____goto(fra.me.REG[1]) = REGB0;
@@ -19289,7 +19277,7 @@ void parser___ReduceAction131___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5795;
+  fra.me.line = 5793;
   fra.me.meth = LOCATE_parser___ReduceAction131___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -19304,67 +19292,67 @@ void parser___ReduceAction131___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5797 */
+  /* ./parser//parser.nit:5795 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5798 */
+  /* ./parser//parser.nit:5796 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5799 */
+  /* ./parser//parser.nit:5797 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5800 */
+  /* ./parser//parser.nit:5798 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5801 */
+  /* ./parser//parser.nit:5799 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5802 */
+  /* ./parser//parser.nit:5800 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5803 */
+  /* ./parser//parser.nit:5801 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5804 */
+  /* ./parser//parser.nit:5802 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5806 */
+  /* ./parser//parser.nit:5804 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5804);
+  }
+  /* ./parser//parser.nit:5806 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5806);
   }
   /* ./parser//parser.nit:5808 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5808);
   }
   /* ./parser//parser.nit:5810 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5810);
   }
   /* ./parser//parser.nit:5812 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5812);
   }
   /* ./parser//parser.nit:5814 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5814);
-  }
-  /* ./parser//parser.nit:5816 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5816);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5814);
   }
-  /* ./parser//parser.nit:5817 */
+  /* ./parser//parser.nit:5815 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5826 */
+  /* ./parser//parser.nit:5824 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5827 */
+  /* ./parser//parser.nit:5825 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction131____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5827);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5825);
   }
   REGB0 = ATTR_parser___ReduceAction131____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19380,7 +19368,7 @@ void parser___ReduceAction131___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos134]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5830;
+  fra.me.line = 5828;
   fra.me.meth = LOCATE_parser___ReduceAction131___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19388,7 +19376,7 @@ void parser___ReduceAction131___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5830 */
+  /* ./parser//parser.nit:5828 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction131____goto(fra.me.REG[1]) = REGB0;
@@ -19402,7 +19390,7 @@ void parser___ReduceAction132___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5834;
+  fra.me.line = 5832;
   fra.me.meth = LOCATE_parser___ReduceAction132___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -19418,75 +19406,75 @@ void parser___ReduceAction132___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5836 */
+  /* ./parser//parser.nit:5834 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5837 */
+  /* ./parser//parser.nit:5835 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5838 */
+  /* ./parser//parser.nit:5836 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5839 */
+  /* ./parser//parser.nit:5837 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5840 */
+  /* ./parser//parser.nit:5838 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5841 */
+  /* ./parser//parser.nit:5839 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5842 */
+  /* ./parser//parser.nit:5840 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5843 */
+  /* ./parser//parser.nit:5841 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5844 */
+  /* ./parser//parser.nit:5842 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5846 */
+  /* ./parser//parser.nit:5844 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5844);
+  }
+  /* ./parser//parser.nit:5846 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5846);
   }
   /* ./parser//parser.nit:5848 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5848);
   }
   /* ./parser//parser.nit:5850 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5850);
   }
   /* ./parser//parser.nit:5852 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5852);
   }
   /* ./parser//parser.nit:5854 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5854);
   }
   /* ./parser//parser.nit:5856 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5856);
-  }
-  /* ./parser//parser.nit:5858 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5858);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5856);
   }
-  /* ./parser//parser.nit:5859 */
+  /* ./parser//parser.nit:5857 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5868 */
+  /* ./parser//parser.nit:5866 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5869 */
+  /* ./parser//parser.nit:5867 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction132____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5869);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5867);
   }
   REGB0 = ATTR_parser___ReduceAction132____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19502,7 +19490,7 @@ void parser___ReduceAction132___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos135]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5872;
+  fra.me.line = 5870;
   fra.me.meth = LOCATE_parser___ReduceAction132___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19510,7 +19498,7 @@ void parser___ReduceAction132___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5872 */
+  /* ./parser//parser.nit:5870 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction132____goto(fra.me.REG[1]) = REGB0;
@@ -19524,7 +19512,7 @@ void parser___ReduceAction133___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5876;
+  fra.me.line = 5874;
   fra.me.meth = LOCATE_parser___ReduceAction133___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -19538,61 +19526,61 @@ void parser___ReduceAction133___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5878 */
+  /* ./parser//parser.nit:5876 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5879 */
+  /* ./parser//parser.nit:5877 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5880 */
+  /* ./parser//parser.nit:5878 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5881 */
+  /* ./parser//parser.nit:5879 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5882 */
+  /* ./parser//parser.nit:5880 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5883 */
+  /* ./parser//parser.nit:5881 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5884 */
+  /* ./parser//parser.nit:5882 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5885 */
+  /* ./parser//parser.nit:5883 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5887 */
+  /* ./parser//parser.nit:5885 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5887);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5885);
   }
-  /* ./parser//parser.nit:5889 */
+  /* ./parser//parser.nit:5887 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5889);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5887);
   }
-  /* ./parser//parser.nit:5891 */
+  /* ./parser//parser.nit:5889 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5891);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5889);
   }
-  /* ./parser//parser.nit:5893 */
+  /* ./parser//parser.nit:5891 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5893);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5891);
   }
-  /* ./parser//parser.nit:5895 */
+  /* ./parser//parser.nit:5893 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5895);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5893);
   }
-  /* ./parser//parser.nit:5896 */
+  /* ./parser//parser.nit:5894 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5905 */
+  /* ./parser//parser.nit:5903 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5906 */
+  /* ./parser//parser.nit:5904 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction133____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5906);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5904);
   }
   REGB0 = ATTR_parser___ReduceAction133____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19608,7 +19596,7 @@ void parser___ReduceAction133___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos136]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5909;
+  fra.me.line = 5907;
   fra.me.meth = LOCATE_parser___ReduceAction133___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19616,7 +19604,7 @@ void parser___ReduceAction133___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5909 */
+  /* ./parser//parser.nit:5907 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction133____goto(fra.me.REG[1]) = REGB0;
@@ -19630,7 +19618,7 @@ void parser___ReduceAction134___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5913;
+  fra.me.line = 5911;
   fra.me.meth = LOCATE_parser___ReduceAction134___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -19645,69 +19633,69 @@ void parser___ReduceAction134___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5915 */
+  /* ./parser//parser.nit:5913 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5916 */
+  /* ./parser//parser.nit:5914 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5917 */
+  /* ./parser//parser.nit:5915 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5918 */
+  /* ./parser//parser.nit:5916 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5919 */
+  /* ./parser//parser.nit:5917 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5920 */
+  /* ./parser//parser.nit:5918 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5921 */
+  /* ./parser//parser.nit:5919 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5922 */
+  /* ./parser//parser.nit:5920 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5923 */
+  /* ./parser//parser.nit:5921 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5925 */
+  /* ./parser//parser.nit:5923 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5923);
+  }
+  /* ./parser//parser.nit:5925 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5925);
   }
   /* ./parser//parser.nit:5927 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5927);
   }
   /* ./parser//parser.nit:5929 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5929);
   }
   /* ./parser//parser.nit:5931 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5931);
   }
   /* ./parser//parser.nit:5933 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5933);
-  }
-  /* ./parser//parser.nit:5935 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5935);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5933);
   }
-  /* ./parser//parser.nit:5936 */
+  /* ./parser//parser.nit:5934 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5945 */
+  /* ./parser//parser.nit:5943 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5946 */
+  /* ./parser//parser.nit:5944 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction134____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5946);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5944);
   }
   REGB0 = ATTR_parser___ReduceAction134____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19723,7 +19711,7 @@ void parser___ReduceAction134___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos137]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5949;
+  fra.me.line = 5947;
   fra.me.meth = LOCATE_parser___ReduceAction134___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19731,7 +19719,7 @@ void parser___ReduceAction134___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5949 */
+  /* ./parser//parser.nit:5947 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction134____goto(fra.me.REG[1]) = REGB0;
@@ -19745,7 +19733,7 @@ void parser___ReduceAction135___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5953;
+  fra.me.line = 5951;
   fra.me.meth = LOCATE_parser___ReduceAction135___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -19760,69 +19748,69 @@ void parser___ReduceAction135___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5955 */
+  /* ./parser//parser.nit:5953 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5956 */
+  /* ./parser//parser.nit:5954 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5957 */
+  /* ./parser//parser.nit:5955 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5958 */
+  /* ./parser//parser.nit:5956 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5959 */
+  /* ./parser//parser.nit:5957 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5960 */
+  /* ./parser//parser.nit:5958 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5961 */
+  /* ./parser//parser.nit:5959 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5962 */
+  /* ./parser//parser.nit:5960 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5963 */
+  /* ./parser//parser.nit:5961 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5965 */
+  /* ./parser//parser.nit:5963 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5963);
+  }
+  /* ./parser//parser.nit:5965 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5965);
   }
   /* ./parser//parser.nit:5967 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5967);
   }
   /* ./parser//parser.nit:5969 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5969);
   }
   /* ./parser//parser.nit:5971 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 5971);
   }
   /* ./parser//parser.nit:5973 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5973);
-  }
-  /* ./parser//parser.nit:5975 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 5975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 5973);
   }
-  /* ./parser//parser.nit:5976 */
+  /* ./parser//parser.nit:5974 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[8], NIT_NULL, fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:5985 */
+  /* ./parser//parser.nit:5983 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:5986 */
+  /* ./parser//parser.nit:5984 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction135____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5986);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 5984);
   }
   REGB0 = ATTR_parser___ReduceAction135____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19838,7 +19826,7 @@ void parser___ReduceAction135___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos138]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5989;
+  fra.me.line = 5987;
   fra.me.meth = LOCATE_parser___ReduceAction135___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19846,7 +19834,7 @@ void parser___ReduceAction135___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:5989 */
+  /* ./parser//parser.nit:5987 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction135____goto(fra.me.REG[1]) = REGB0;
@@ -19860,7 +19848,7 @@ void parser___ReduceAction136___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 5993;
+  fra.me.line = 5991;
   fra.me.meth = LOCATE_parser___ReduceAction136___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -19876,77 +19864,77 @@ void parser___ReduceAction136___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:5995 */
+  /* ./parser//parser.nit:5993 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:5996 */
+  /* ./parser//parser.nit:5994 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5997 */
+  /* ./parser//parser.nit:5995 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5998 */
+  /* ./parser//parser.nit:5996 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:5999 */
+  /* ./parser//parser.nit:5997 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6000 */
+  /* ./parser//parser.nit:5998 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6001 */
+  /* ./parser//parser.nit:5999 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6002 */
+  /* ./parser//parser.nit:6000 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6003 */
+  /* ./parser//parser.nit:6001 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6004 */
+  /* ./parser//parser.nit:6002 */
   fra.me.REG[9] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6006 */
+  /* ./parser//parser.nit:6004 */
   REGB0 = TAG_Bool((fra.me.REG[9]==NIT_NULL) || VAL_ISA(fra.me.REG[9], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6004);
+  }
+  /* ./parser//parser.nit:6006 */
+  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6006);
   }
   /* ./parser//parser.nit:6008 */
-  REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6008);
   }
   /* ./parser//parser.nit:6010 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6010);
   }
   /* ./parser//parser.nit:6012 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6012);
   }
   /* ./parser//parser.nit:6014 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AMethid, ID_AMethid)) /*cast nullable AMethid*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6014);
   }
   /* ./parser//parser.nit:6016 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6016);
-  }
-  /* ./parser//parser.nit:6018 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6018);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6016);
   }
-  /* ./parser//parser.nit:6019 */
+  /* ./parser//parser.nit:6017 */
   fra.me.REG[3] = NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[9], fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6028 */
+  /* ./parser//parser.nit:6026 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6029 */
+  /* ./parser//parser.nit:6027 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction136____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6029);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6027);
   }
   REGB0 = ATTR_parser___ReduceAction136____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -19962,7 +19950,7 @@ void parser___ReduceAction136___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos139]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6032;
+  fra.me.line = 6030;
   fra.me.meth = LOCATE_parser___ReduceAction136___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -19970,7 +19958,7 @@ void parser___ReduceAction136___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6032 */
+  /* ./parser//parser.nit:6030 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction136____goto(fra.me.REG[1]) = REGB0;
@@ -19984,7 +19972,7 @@ void parser___ReduceAction137___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6036;
+  fra.me.line = 6034;
   fra.me.meth = LOCATE_parser___ReduceAction137___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -19998,57 +19986,57 @@ void parser___ReduceAction137___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6038 */
+  /* ./parser//parser.nit:6036 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6039 */
+  /* ./parser//parser.nit:6037 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6040 */
+  /* ./parser//parser.nit:6038 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6041 */
+  /* ./parser//parser.nit:6039 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6042 */
+  /* ./parser//parser.nit:6040 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6043 */
+  /* ./parser//parser.nit:6041 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6045 */
+  /* ./parser//parser.nit:6043 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6045);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6043);
   }
-  /* ./parser//parser.nit:6047 */
+  /* ./parser//parser.nit:6045 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6047);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6045);
   }
-  /* ./parser//parser.nit:6049 */
+  /* ./parser//parser.nit:6047 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwtype, ID_TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6049);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6047);
   }
-  /* ./parser//parser.nit:6051 */
+  /* ./parser//parser.nit:6049 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6051);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6049);
   }
-  /* ./parser//parser.nit:6053 */
+  /* ./parser//parser.nit:6051 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6053);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6051);
   }
-  /* ./parser//parser.nit:6054 */
+  /* ./parser//parser.nit:6052 */
   fra.me.REG[3] = NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[7], NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6062 */
+  /* ./parser//parser.nit:6060 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6063 */
+  /* ./parser//parser.nit:6061 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction137____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6063);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6061);
   }
   REGB0 = ATTR_parser___ReduceAction137____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20064,7 +20052,7 @@ void parser___ReduceAction137___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos140]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6066;
+  fra.me.line = 6064;
   fra.me.meth = LOCATE_parser___ReduceAction137___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20072,7 +20060,7 @@ void parser___ReduceAction137___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6066 */
+  /* ./parser//parser.nit:6064 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction137____goto(fra.me.REG[1]) = REGB0;
@@ -20086,7 +20074,7 @@ void parser___ReduceAction138___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6070;
+  fra.me.line = 6068;
   fra.me.meth = LOCATE_parser___ReduceAction138___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -20101,65 +20089,65 @@ void parser___ReduceAction138___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6072 */
+  /* ./parser//parser.nit:6070 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6073 */
+  /* ./parser//parser.nit:6071 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6074 */
+  /* ./parser//parser.nit:6072 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6075 */
+  /* ./parser//parser.nit:6073 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6076 */
+  /* ./parser//parser.nit:6074 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6077 */
+  /* ./parser//parser.nit:6075 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6078 */
+  /* ./parser//parser.nit:6076 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6080 */
+  /* ./parser//parser.nit:6078 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_ADoc, ID_ADoc)) /*cast nullable ADoc*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6078);
+  }
+  /* ./parser//parser.nit:6080 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6080);
   }
   /* ./parser//parser.nit:6082 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6082);
   }
   /* ./parser//parser.nit:6084 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwtype, ID_TKwtype)) /*cast nullable TKwtype*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6084);
   }
   /* ./parser//parser.nit:6086 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwtype, ID_TKwtype)) /*cast nullable TKwtype*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 6086);
   }
   /* ./parser//parser.nit:6088 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6088);
-  }
-  /* ./parser//parser.nit:6090 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6090);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6088);
   }
-  /* ./parser//parser.nit:6091 */
+  /* ./parser//parser.nit:6089 */
   fra.me.REG[3] = NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6099 */
+  /* ./parser//parser.nit:6097 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6100 */
+  /* ./parser//parser.nit:6098 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction138____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6100);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6098);
   }
   REGB0 = ATTR_parser___ReduceAction138____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20175,7 +20163,7 @@ void parser___ReduceAction138___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos141]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6103;
+  fra.me.line = 6101;
   fra.me.meth = LOCATE_parser___ReduceAction138___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20183,7 +20171,7 @@ void parser___ReduceAction138___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6103 */
+  /* ./parser//parser.nit:6101 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction138____goto(fra.me.REG[1]) = REGB0;
@@ -20197,7 +20185,7 @@ void parser___ReduceAction139___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6107;
+  fra.me.line = 6105;
   fra.me.meth = LOCATE_parser___ReduceAction139___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20207,25 +20195,25 @@ void parser___ReduceAction139___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6109 */
+  /* ./parser//parser.nit:6107 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6110 */
+  /* ./parser//parser.nit:6108 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6112 */
+  /* ./parser//parser.nit:6110 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwreadable, ID_TKwreadable)) /*cast nullable TKwreadable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6112);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6110);
   }
-  /* ./parser//parser.nit:6113 */
+  /* ./parser//parser.nit:6111 */
   fra.me.REG[3] = NEW_AReadAble_parser_prod___AReadAble___init_areadable(NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:6117 */
+  /* ./parser//parser.nit:6115 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6118 */
+  /* ./parser//parser.nit:6116 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction139____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6118);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6116);
   }
   REGB0 = ATTR_parser___ReduceAction139____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20241,7 +20229,7 @@ void parser___ReduceAction139___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos142]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6121;
+  fra.me.line = 6119;
   fra.me.meth = LOCATE_parser___ReduceAction139___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20249,7 +20237,7 @@ void parser___ReduceAction139___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6121 */
+  /* ./parser//parser.nit:6119 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction139____goto(fra.me.REG[1]) = REGB0;
@@ -20263,7 +20251,7 @@ void parser___ReduceAction140___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6125;
+  fra.me.line = 6123;
   fra.me.meth = LOCATE_parser___ReduceAction140___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -20274,33 +20262,33 @@ void parser___ReduceAction140___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6127 */
+  /* ./parser//parser.nit:6125 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6128 */
+  /* ./parser//parser.nit:6126 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6129 */
+  /* ./parser//parser.nit:6127 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6131 */
+  /* ./parser//parser.nit:6129 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6131);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6129);
   }
-  /* ./parser//parser.nit:6133 */
+  /* ./parser//parser.nit:6131 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwreadable, ID_TKwreadable)) /*cast nullable TKwreadable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6133);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6131);
   }
-  /* ./parser//parser.nit:6134 */
+  /* ./parser//parser.nit:6132 */
   fra.me.REG[3] = NEW_AReadAble_parser_prod___AReadAble___init_areadable(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6138 */
+  /* ./parser//parser.nit:6136 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6139 */
+  /* ./parser//parser.nit:6137 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction140____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6139);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6137);
   }
   REGB0 = ATTR_parser___ReduceAction140____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20316,7 +20304,7 @@ void parser___ReduceAction140___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos143]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6142;
+  fra.me.line = 6140;
   fra.me.meth = LOCATE_parser___ReduceAction140___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20324,7 +20312,7 @@ void parser___ReduceAction140___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6142 */
+  /* ./parser//parser.nit:6140 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction140____goto(fra.me.REG[1]) = REGB0;
@@ -20338,7 +20326,7 @@ void parser___ReduceAction141___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6146;
+  fra.me.line = 6144;
   fra.me.meth = LOCATE_parser___ReduceAction141___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20348,25 +20336,25 @@ void parser___ReduceAction141___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6148 */
+  /* ./parser//parser.nit:6146 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6149 */
+  /* ./parser//parser.nit:6147 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6151 */
+  /* ./parser//parser.nit:6149 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6151);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6149);
   }
-  /* ./parser//parser.nit:6152 */
+  /* ./parser//parser.nit:6150 */
   fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:6157 */
+  /* ./parser//parser.nit:6155 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6158 */
+  /* ./parser//parser.nit:6156 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction141____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6158);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6156);
   }
   REGB0 = ATTR_parser___ReduceAction141____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20382,7 +20370,7 @@ void parser___ReduceAction141___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos144]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6161;
+  fra.me.line = 6159;
   fra.me.meth = LOCATE_parser___ReduceAction141___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20390,7 +20378,7 @@ void parser___ReduceAction141___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6161 */
+  /* ./parser//parser.nit:6159 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction141____goto(fra.me.REG[1]) = REGB0;
@@ -20404,7 +20392,7 @@ void parser___ReduceAction142___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6165;
+  fra.me.line = 6163;
   fra.me.meth = LOCATE_parser___ReduceAction142___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -20415,33 +20403,33 @@ void parser___ReduceAction142___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6167 */
+  /* ./parser//parser.nit:6165 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6168 */
+  /* ./parser//parser.nit:6166 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6169 */
+  /* ./parser//parser.nit:6167 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6171 */
+  /* ./parser//parser.nit:6169 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6171);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6169);
   }
-  /* ./parser//parser.nit:6173 */
+  /* ./parser//parser.nit:6171 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6173);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6171);
   }
-  /* ./parser//parser.nit:6174 */
+  /* ./parser//parser.nit:6172 */
   fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:6179 */
+  /* ./parser//parser.nit:6177 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6180 */
+  /* ./parser//parser.nit:6178 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction142____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6180);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6178);
   }
   REGB0 = ATTR_parser___ReduceAction142____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20457,7 +20445,7 @@ void parser___ReduceAction142___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos145]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6183;
+  fra.me.line = 6181;
   fra.me.meth = LOCATE_parser___ReduceAction142___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20465,7 +20453,7 @@ void parser___ReduceAction142___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6183 */
+  /* ./parser//parser.nit:6181 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction142____goto(fra.me.REG[1]) = REGB0;
@@ -20479,7 +20467,7 @@ void parser___ReduceAction143___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6187;
+  fra.me.line = 6185;
   fra.me.meth = LOCATE_parser___ReduceAction143___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -20490,33 +20478,33 @@ void parser___ReduceAction143___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6189 */
+  /* ./parser//parser.nit:6187 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6190 */
+  /* ./parser//parser.nit:6188 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6191 */
+  /* ./parser//parser.nit:6189 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6193 */
+  /* ./parser//parser.nit:6191 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6193);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6191);
   }
-  /* ./parser//parser.nit:6195 */
+  /* ./parser//parser.nit:6193 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6195);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6193);
   }
-  /* ./parser//parser.nit:6196 */
+  /* ./parser//parser.nit:6194 */
   fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6201 */
+  /* ./parser//parser.nit:6199 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6202 */
+  /* ./parser//parser.nit:6200 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction143____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6202);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6200);
   }
   REGB0 = ATTR_parser___ReduceAction143____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20532,7 +20520,7 @@ void parser___ReduceAction143___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos146]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6205;
+  fra.me.line = 6203;
   fra.me.meth = LOCATE_parser___ReduceAction143___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20540,7 +20528,7 @@ void parser___ReduceAction143___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6205 */
+  /* ./parser//parser.nit:6203 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction143____goto(fra.me.REG[1]) = REGB0;
@@ -20554,7 +20542,7 @@ void parser___ReduceAction144___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6209;
+  fra.me.line = 6207;
   fra.me.meth = LOCATE_parser___ReduceAction144___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -20566,41 +20554,41 @@ void parser___ReduceAction144___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6211 */
+  /* ./parser//parser.nit:6209 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6212 */
+  /* ./parser//parser.nit:6210 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6213 */
+  /* ./parser//parser.nit:6211 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6214 */
+  /* ./parser//parser.nit:6212 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6216 */
+  /* ./parser//parser.nit:6214 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwredef, ID_TKwredef)) /*cast nullable TKwredef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6216);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6214);
   }
-  /* ./parser//parser.nit:6218 */
+  /* ./parser//parser.nit:6216 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AVisibility, ID_AVisibility)) /*cast nullable AVisibility*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6218);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6216);
   }
-  /* ./parser//parser.nit:6220 */
+  /* ./parser//parser.nit:6218 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwwritable, ID_TKwwritable)) /*cast nullable TKwwritable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6220);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6218);
   }
-  /* ./parser//parser.nit:6221 */
+  /* ./parser//parser.nit:6219 */
   fra.me.REG[3] = NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6226 */
+  /* ./parser//parser.nit:6224 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6227 */
+  /* ./parser//parser.nit:6225 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction144____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6227);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6225);
   }
   REGB0 = ATTR_parser___ReduceAction144____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20616,7 +20604,7 @@ void parser___ReduceAction144___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos147]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6230;
+  fra.me.line = 6228;
   fra.me.meth = LOCATE_parser___ReduceAction144___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20624,7 +20612,7 @@ void parser___ReduceAction144___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6230 */
+  /* ./parser//parser.nit:6228 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction144____goto(fra.me.REG[1]) = REGB0;
@@ -20638,7 +20626,7 @@ void parser___ReduceAction145___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6234;
+  fra.me.line = 6232;
   fra.me.meth = LOCATE_parser___ReduceAction145___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20648,17 +20636,17 @@ void parser___ReduceAction145___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6236 */
+  /* ./parser//parser.nit:6234 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6237 */
+  /* ./parser//parser.nit:6235 */
   fra.me.REG[3] = NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility();
-  /* ./parser//parser.nit:6239 */
+  /* ./parser//parser.nit:6237 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6240 */
+  /* ./parser//parser.nit:6238 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction145____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6240);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6238);
   }
   REGB0 = ATTR_parser___ReduceAction145____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20674,7 +20662,7 @@ void parser___ReduceAction145___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos148]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6243;
+  fra.me.line = 6241;
   fra.me.meth = LOCATE_parser___ReduceAction145___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20682,7 +20670,7 @@ void parser___ReduceAction145___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6243 */
+  /* ./parser//parser.nit:6241 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction145____goto(fra.me.REG[1]) = REGB0;
@@ -20696,7 +20684,7 @@ void parser___ReduceAction146___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6247;
+  fra.me.line = 6245;
   fra.me.meth = LOCATE_parser___ReduceAction146___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20706,27 +20694,27 @@ void parser___ReduceAction146___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6249 */
+  /* ./parser//parser.nit:6247 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6250 */
+  /* ./parser//parser.nit:6248 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6251 */
+  /* ./parser//parser.nit:6249 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6253 */
+  /* ./parser//parser.nit:6251 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwprivate, ID_TKwprivate)) /*cast nullable TKwprivate*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6253);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6251);
   }
-  /* ./parser//parser.nit:6254 */
+  /* ./parser//parser.nit:6252 */
   fra.me.REG[3] = NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[3]);
-  /* ./parser//parser.nit:6257 */
+  /* ./parser//parser.nit:6255 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6258 */
+  /* ./parser//parser.nit:6256 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction146____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6258);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6256);
   }
   REGB0 = ATTR_parser___ReduceAction146____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20742,7 +20730,7 @@ void parser___ReduceAction146___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos149]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6261;
+  fra.me.line = 6259;
   fra.me.meth = LOCATE_parser___ReduceAction146___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20750,7 +20738,7 @@ void parser___ReduceAction146___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6261 */
+  /* ./parser//parser.nit:6259 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction146____goto(fra.me.REG[1]) = REGB0;
@@ -20764,7 +20752,7 @@ void parser___ReduceAction147___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6265;
+  fra.me.line = 6263;
   fra.me.meth = LOCATE_parser___ReduceAction147___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20774,27 +20762,27 @@ void parser___ReduceAction147___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6267 */
+  /* ./parser//parser.nit:6265 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6268 */
+  /* ./parser//parser.nit:6266 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6269 */
+  /* ./parser//parser.nit:6267 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6271 */
+  /* ./parser//parser.nit:6269 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwprotected, ID_TKwprotected)) /*cast nullable TKwprotected*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6271);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6269);
   }
-  /* ./parser//parser.nit:6272 */
+  /* ./parser//parser.nit:6270 */
   fra.me.REG[3] = NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[3]);
-  /* ./parser//parser.nit:6275 */
+  /* ./parser//parser.nit:6273 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6276 */
+  /* ./parser//parser.nit:6274 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction147____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6276);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6274);
   }
   REGB0 = ATTR_parser___ReduceAction147____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20810,7 +20798,7 @@ void parser___ReduceAction147___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos150]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6279;
+  fra.me.line = 6277;
   fra.me.meth = LOCATE_parser___ReduceAction147___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20818,7 +20806,7 @@ void parser___ReduceAction147___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6279 */
+  /* ./parser//parser.nit:6277 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction147____goto(fra.me.REG[1]) = REGB0;
@@ -20832,7 +20820,7 @@ void parser___ReduceAction148___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6283;
+  fra.me.line = 6281;
   fra.me.meth = LOCATE_parser___ReduceAction148___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20842,27 +20830,27 @@ void parser___ReduceAction148___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6285 */
+  /* ./parser//parser.nit:6283 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6286 */
+  /* ./parser//parser.nit:6284 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6287 */
+  /* ./parser//parser.nit:6285 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6289 */
+  /* ./parser//parser.nit:6287 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwintrude, ID_TKwintrude)) /*cast nullable TKwintrude*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6289);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6287);
   }
-  /* ./parser//parser.nit:6290 */
+  /* ./parser//parser.nit:6288 */
   fra.me.REG[3] = NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[3]);
-  /* ./parser//parser.nit:6293 */
+  /* ./parser//parser.nit:6291 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6294 */
+  /* ./parser//parser.nit:6292 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction148____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6294);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6292);
   }
   REGB0 = ATTR_parser___ReduceAction148____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20878,7 +20866,7 @@ void parser___ReduceAction148___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos151]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6297;
+  fra.me.line = 6295;
   fra.me.meth = LOCATE_parser___ReduceAction148___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20886,7 +20874,7 @@ void parser___ReduceAction148___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6297 */
+  /* ./parser//parser.nit:6295 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction148____goto(fra.me.REG[1]) = REGB0;
@@ -20900,7 +20888,7 @@ void parser___ReduceAction149___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6301;
+  fra.me.line = 6299;
   fra.me.meth = LOCATE_parser___ReduceAction149___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20910,25 +20898,25 @@ void parser___ReduceAction149___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6303 */
+  /* ./parser//parser.nit:6301 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6304 */
+  /* ./parser//parser.nit:6302 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6306 */
+  /* ./parser//parser.nit:6304 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6306);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6304);
   }
-  /* ./parser//parser.nit:6307 */
+  /* ./parser//parser.nit:6305 */
   fra.me.REG[3] = NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6310 */
+  /* ./parser//parser.nit:6308 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6311 */
+  /* ./parser//parser.nit:6309 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction149____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6311);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6309);
   }
   REGB0 = ATTR_parser___ReduceAction149____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -20944,7 +20932,7 @@ void parser___ReduceAction149___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos152]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6314;
+  fra.me.line = 6312;
   fra.me.meth = LOCATE_parser___ReduceAction149___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -20952,7 +20940,7 @@ void parser___ReduceAction149___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6314 */
+  /* ./parser//parser.nit:6312 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction149____goto(fra.me.REG[1]) = REGB0;
@@ -20966,7 +20954,7 @@ void parser___ReduceAction150___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6318;
+  fra.me.line = 6316;
   fra.me.meth = LOCATE_parser___ReduceAction150___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -20976,25 +20964,25 @@ void parser___ReduceAction150___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6320 */
+  /* ./parser//parser.nit:6318 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6321 */
+  /* ./parser//parser.nit:6319 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6323 */
+  /* ./parser//parser.nit:6321 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TPlus, ID_TPlus)) /*cast nullable TPlus*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6323);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6321);
   }
-  /* ./parser//parser.nit:6324 */
+  /* ./parser//parser.nit:6322 */
   fra.me.REG[3] = NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6327 */
+  /* ./parser//parser.nit:6325 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6328 */
+  /* ./parser//parser.nit:6326 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction150____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6328);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6326);
   }
   REGB0 = ATTR_parser___ReduceAction150____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21010,7 +20998,7 @@ void parser___ReduceAction150___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos153]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6331;
+  fra.me.line = 6329;
   fra.me.meth = LOCATE_parser___ReduceAction150___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21018,7 +21006,7 @@ void parser___ReduceAction150___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6331 */
+  /* ./parser//parser.nit:6329 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction150____goto(fra.me.REG[1]) = REGB0;
@@ -21032,7 +21020,7 @@ void parser___ReduceAction151___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6335;
+  fra.me.line = 6333;
   fra.me.meth = LOCATE_parser___ReduceAction151___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21042,25 +21030,25 @@ void parser___ReduceAction151___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6337 */
+  /* ./parser//parser.nit:6335 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6338 */
+  /* ./parser//parser.nit:6336 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6340 */
+  /* ./parser//parser.nit:6338 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TMinus, ID_TMinus)) /*cast nullable TMinus*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6340);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6338);
   }
-  /* ./parser//parser.nit:6341 */
+  /* ./parser//parser.nit:6339 */
   fra.me.REG[3] = NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6344 */
+  /* ./parser//parser.nit:6342 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6345 */
+  /* ./parser//parser.nit:6343 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction151____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6345);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6343);
   }
   REGB0 = ATTR_parser___ReduceAction151____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21076,7 +21064,7 @@ void parser___ReduceAction151___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos154]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6348;
+  fra.me.line = 6346;
   fra.me.meth = LOCATE_parser___ReduceAction151___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21084,7 +21072,7 @@ void parser___ReduceAction151___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6348 */
+  /* ./parser//parser.nit:6346 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction151____goto(fra.me.REG[1]) = REGB0;
@@ -21098,7 +21086,7 @@ void parser___ReduceAction152___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6352;
+  fra.me.line = 6350;
   fra.me.meth = LOCATE_parser___ReduceAction152___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21108,25 +21096,25 @@ void parser___ReduceAction152___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6354 */
+  /* ./parser//parser.nit:6352 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6355 */
+  /* ./parser//parser.nit:6353 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6357 */
+  /* ./parser//parser.nit:6355 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TStar, ID_TStar)) /*cast nullable TStar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6357);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6355);
   }
-  /* ./parser//parser.nit:6358 */
+  /* ./parser//parser.nit:6356 */
   fra.me.REG[3] = NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6361 */
+  /* ./parser//parser.nit:6359 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6362 */
+  /* ./parser//parser.nit:6360 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction152____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6362);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6360);
   }
   REGB0 = ATTR_parser___ReduceAction152____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21142,7 +21130,7 @@ void parser___ReduceAction152___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos155]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6365;
+  fra.me.line = 6363;
   fra.me.meth = LOCATE_parser___ReduceAction152___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21150,7 +21138,7 @@ void parser___ReduceAction152___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6365 */
+  /* ./parser//parser.nit:6363 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction152____goto(fra.me.REG[1]) = REGB0;
@@ -21164,7 +21152,7 @@ void parser___ReduceAction153___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6369;
+  fra.me.line = 6367;
   fra.me.meth = LOCATE_parser___ReduceAction153___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21174,25 +21162,25 @@ void parser___ReduceAction153___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6371 */
+  /* ./parser//parser.nit:6369 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6372 */
+  /* ./parser//parser.nit:6370 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6374 */
+  /* ./parser//parser.nit:6372 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TSlash, ID_TSlash)) /*cast nullable TSlash*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6374);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6372);
   }
-  /* ./parser//parser.nit:6375 */
+  /* ./parser//parser.nit:6373 */
   fra.me.REG[3] = NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6378 */
+  /* ./parser//parser.nit:6376 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6379 */
+  /* ./parser//parser.nit:6377 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction153____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6379);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6377);
   }
   REGB0 = ATTR_parser___ReduceAction153____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21208,7 +21196,7 @@ void parser___ReduceAction153___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos156]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6382;
+  fra.me.line = 6380;
   fra.me.meth = LOCATE_parser___ReduceAction153___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21216,7 +21204,7 @@ void parser___ReduceAction153___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6382 */
+  /* ./parser//parser.nit:6380 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction153____goto(fra.me.REG[1]) = REGB0;
@@ -21230,7 +21218,7 @@ void parser___ReduceAction154___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6386;
+  fra.me.line = 6384;
   fra.me.meth = LOCATE_parser___ReduceAction154___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21240,25 +21228,25 @@ void parser___ReduceAction154___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6388 */
+  /* ./parser//parser.nit:6386 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6389 */
+  /* ./parser//parser.nit:6387 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6391 */
+  /* ./parser//parser.nit:6389 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TPercent, ID_TPercent)) /*cast nullable TPercent*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6391);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6389);
   }
-  /* ./parser//parser.nit:6392 */
+  /* ./parser//parser.nit:6390 */
   fra.me.REG[3] = NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6395 */
+  /* ./parser//parser.nit:6393 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6396 */
+  /* ./parser//parser.nit:6394 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction154____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6396);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6394);
   }
   REGB0 = ATTR_parser___ReduceAction154____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21274,7 +21262,7 @@ void parser___ReduceAction154___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos157]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6399;
+  fra.me.line = 6397;
   fra.me.meth = LOCATE_parser___ReduceAction154___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21282,7 +21270,7 @@ void parser___ReduceAction154___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6399 */
+  /* ./parser//parser.nit:6397 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction154____goto(fra.me.REG[1]) = REGB0;
@@ -21296,7 +21284,7 @@ void parser___ReduceAction155___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6403;
+  fra.me.line = 6401;
   fra.me.meth = LOCATE_parser___ReduceAction155___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21306,25 +21294,25 @@ void parser___ReduceAction155___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6405 */
+  /* ./parser//parser.nit:6403 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6406 */
+  /* ./parser//parser.nit:6404 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6408 */
+  /* ./parser//parser.nit:6406 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TEq, ID_TEq)) /*cast nullable TEq*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6408);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6406);
   }
-  /* ./parser//parser.nit:6409 */
+  /* ./parser//parser.nit:6407 */
   fra.me.REG[3] = NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6412 */
+  /* ./parser//parser.nit:6410 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6413 */
+  /* ./parser//parser.nit:6411 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction155____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6413);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6411);
   }
   REGB0 = ATTR_parser___ReduceAction155____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21340,7 +21328,7 @@ void parser___ReduceAction155___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos158]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6416;
+  fra.me.line = 6414;
   fra.me.meth = LOCATE_parser___ReduceAction155___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21348,7 +21336,7 @@ void parser___ReduceAction155___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6416 */
+  /* ./parser//parser.nit:6414 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction155____goto(fra.me.REG[1]) = REGB0;
@@ -21362,7 +21350,7 @@ void parser___ReduceAction156___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6420;
+  fra.me.line = 6418;
   fra.me.meth = LOCATE_parser___ReduceAction156___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21372,25 +21360,25 @@ void parser___ReduceAction156___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6422 */
+  /* ./parser//parser.nit:6420 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6423 */
+  /* ./parser//parser.nit:6421 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6425 */
+  /* ./parser//parser.nit:6423 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TNe, ID_TNe)) /*cast nullable TNe*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6425);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6423);
   }
-  /* ./parser//parser.nit:6426 */
+  /* ./parser//parser.nit:6424 */
   fra.me.REG[3] = NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6429 */
+  /* ./parser//parser.nit:6427 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6430 */
+  /* ./parser//parser.nit:6428 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction156____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6430);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6428);
   }
   REGB0 = ATTR_parser___ReduceAction156____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21406,7 +21394,7 @@ void parser___ReduceAction156___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos159]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6433;
+  fra.me.line = 6431;
   fra.me.meth = LOCATE_parser___ReduceAction156___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21414,7 +21402,7 @@ void parser___ReduceAction156___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6433 */
+  /* ./parser//parser.nit:6431 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction156____goto(fra.me.REG[1]) = REGB0;
@@ -21428,7 +21416,7 @@ void parser___ReduceAction157___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6437;
+  fra.me.line = 6435;
   fra.me.meth = LOCATE_parser___ReduceAction157___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21438,25 +21426,25 @@ void parser___ReduceAction157___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6439 */
+  /* ./parser//parser.nit:6437 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6440 */
+  /* ./parser//parser.nit:6438 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6442 */
+  /* ./parser//parser.nit:6440 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TLe, ID_TLe)) /*cast nullable TLe*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6442);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6440);
   }
-  /* ./parser//parser.nit:6443 */
+  /* ./parser//parser.nit:6441 */
   fra.me.REG[3] = NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6446 */
+  /* ./parser//parser.nit:6444 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6447 */
+  /* ./parser//parser.nit:6445 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction157____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6447);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6445);
   }
   REGB0 = ATTR_parser___ReduceAction157____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21472,7 +21460,7 @@ void parser___ReduceAction157___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos160]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6450;
+  fra.me.line = 6448;
   fra.me.meth = LOCATE_parser___ReduceAction157___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21480,7 +21468,7 @@ void parser___ReduceAction157___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6450 */
+  /* ./parser//parser.nit:6448 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction157____goto(fra.me.REG[1]) = REGB0;
@@ -21494,7 +21482,7 @@ void parser___ReduceAction158___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6454;
+  fra.me.line = 6452;
   fra.me.meth = LOCATE_parser___ReduceAction158___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21504,25 +21492,25 @@ void parser___ReduceAction158___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6456 */
+  /* ./parser//parser.nit:6454 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6457 */
+  /* ./parser//parser.nit:6455 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6459 */
+  /* ./parser//parser.nit:6457 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TGe, ID_TGe)) /*cast nullable TGe*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6459);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6457);
   }
-  /* ./parser//parser.nit:6460 */
+  /* ./parser//parser.nit:6458 */
   fra.me.REG[3] = NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6463 */
+  /* ./parser//parser.nit:6461 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6464 */
+  /* ./parser//parser.nit:6462 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction158____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6464);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6462);
   }
   REGB0 = ATTR_parser___ReduceAction158____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21538,7 +21526,7 @@ void parser___ReduceAction158___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos161]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6467;
+  fra.me.line = 6465;
   fra.me.meth = LOCATE_parser___ReduceAction158___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21546,7 +21534,7 @@ void parser___ReduceAction158___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6467 */
+  /* ./parser//parser.nit:6465 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction158____goto(fra.me.REG[1]) = REGB0;
@@ -21560,7 +21548,7 @@ void parser___ReduceAction159___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6471;
+  fra.me.line = 6469;
   fra.me.meth = LOCATE_parser___ReduceAction159___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21570,25 +21558,25 @@ void parser___ReduceAction159___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6473 */
+  /* ./parser//parser.nit:6471 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6474 */
+  /* ./parser//parser.nit:6472 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6476 */
+  /* ./parser//parser.nit:6474 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TLt, ID_TLt)) /*cast nullable TLt*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6476);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6474);
   }
-  /* ./parser//parser.nit:6477 */
+  /* ./parser//parser.nit:6475 */
   fra.me.REG[3] = NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6480 */
+  /* ./parser//parser.nit:6478 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6481 */
+  /* ./parser//parser.nit:6479 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction159____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6481);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6479);
   }
   REGB0 = ATTR_parser___ReduceAction159____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21604,7 +21592,7 @@ void parser___ReduceAction159___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos162]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6484;
+  fra.me.line = 6482;
   fra.me.meth = LOCATE_parser___ReduceAction159___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21612,7 +21600,7 @@ void parser___ReduceAction159___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6484 */
+  /* ./parser//parser.nit:6482 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction159____goto(fra.me.REG[1]) = REGB0;
@@ -21626,7 +21614,7 @@ void parser___ReduceAction160___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6488;
+  fra.me.line = 6486;
   fra.me.meth = LOCATE_parser___ReduceAction160___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21636,25 +21624,25 @@ void parser___ReduceAction160___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6490 */
+  /* ./parser//parser.nit:6488 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6491 */
+  /* ./parser//parser.nit:6489 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6493 */
+  /* ./parser//parser.nit:6491 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TGt, ID_TGt)) /*cast nullable TGt*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6493);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6491);
   }
-  /* ./parser//parser.nit:6494 */
+  /* ./parser//parser.nit:6492 */
   fra.me.REG[3] = NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6497 */
+  /* ./parser//parser.nit:6495 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6498 */
+  /* ./parser//parser.nit:6496 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction160____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6498);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6496);
   }
   REGB0 = ATTR_parser___ReduceAction160____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21670,7 +21658,7 @@ void parser___ReduceAction160___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos163]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6501;
+  fra.me.line = 6499;
   fra.me.meth = LOCATE_parser___ReduceAction160___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21678,7 +21666,7 @@ void parser___ReduceAction160___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6501 */
+  /* ./parser//parser.nit:6499 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction160____goto(fra.me.REG[1]) = REGB0;
@@ -21692,7 +21680,7 @@ void parser___ReduceAction161___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6505;
+  fra.me.line = 6503;
   fra.me.meth = LOCATE_parser___ReduceAction161___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21702,25 +21690,25 @@ void parser___ReduceAction161___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6507 */
+  /* ./parser//parser.nit:6505 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6508 */
+  /* ./parser//parser.nit:6506 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6510 */
+  /* ./parser//parser.nit:6508 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TLl, ID_TLl)) /*cast nullable TLl*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6510);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6508);
   }
-  /* ./parser//parser.nit:6511 */
+  /* ./parser//parser.nit:6509 */
   fra.me.REG[3] = NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6514 */
+  /* ./parser//parser.nit:6512 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6515 */
+  /* ./parser//parser.nit:6513 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction161____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6515);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6513);
   }
   REGB0 = ATTR_parser___ReduceAction161____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21736,7 +21724,7 @@ void parser___ReduceAction161___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos164]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6518;
+  fra.me.line = 6516;
   fra.me.meth = LOCATE_parser___ReduceAction161___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21744,7 +21732,7 @@ void parser___ReduceAction161___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6518 */
+  /* ./parser//parser.nit:6516 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction161____goto(fra.me.REG[1]) = REGB0;
@@ -21758,7 +21746,7 @@ void parser___ReduceAction162___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6522;
+  fra.me.line = 6520;
   fra.me.meth = LOCATE_parser___ReduceAction162___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21768,25 +21756,25 @@ void parser___ReduceAction162___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6524 */
+  /* ./parser//parser.nit:6522 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6525 */
+  /* ./parser//parser.nit:6523 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6527 */
+  /* ./parser//parser.nit:6525 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TGg, ID_TGg)) /*cast nullable TGg*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6527);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6525);
   }
-  /* ./parser//parser.nit:6528 */
+  /* ./parser//parser.nit:6526 */
   fra.me.REG[3] = NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6531 */
+  /* ./parser//parser.nit:6529 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6532 */
+  /* ./parser//parser.nit:6530 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction162____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6532);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6530);
   }
   REGB0 = ATTR_parser___ReduceAction162____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21802,7 +21790,7 @@ void parser___ReduceAction162___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos165]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6535;
+  fra.me.line = 6533;
   fra.me.meth = LOCATE_parser___ReduceAction162___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21810,7 +21798,7 @@ void parser___ReduceAction162___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6535 */
+  /* ./parser//parser.nit:6533 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction162____goto(fra.me.REG[1]) = REGB0;
@@ -21824,7 +21812,7 @@ void parser___ReduceAction163___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6539;
+  fra.me.line = 6537;
   fra.me.meth = LOCATE_parser___ReduceAction163___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -21835,33 +21823,33 @@ void parser___ReduceAction163___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6541 */
+  /* ./parser//parser.nit:6539 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6542 */
+  /* ./parser//parser.nit:6540 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6543 */
+  /* ./parser//parser.nit:6541 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6545 */
+  /* ./parser//parser.nit:6543 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TObra, ID_TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6545);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6543);
   }
-  /* ./parser//parser.nit:6547 */
+  /* ./parser//parser.nit:6545 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TCbra, ID_TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6547);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6545);
   }
-  /* ./parser//parser.nit:6548 */
+  /* ./parser//parser.nit:6546 */
   fra.me.REG[3] = NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6552 */
+  /* ./parser//parser.nit:6550 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6553 */
+  /* ./parser//parser.nit:6551 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction163____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6553);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6551);
   }
   REGB0 = ATTR_parser___ReduceAction163____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21877,7 +21865,7 @@ void parser___ReduceAction163___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos166]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6556;
+  fra.me.line = 6554;
   fra.me.meth = LOCATE_parser___ReduceAction163___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21885,7 +21873,7 @@ void parser___ReduceAction163___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6556 */
+  /* ./parser//parser.nit:6554 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction163____goto(fra.me.REG[1]) = REGB0;
@@ -21899,7 +21887,7 @@ void parser___ReduceAction164___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6560;
+  fra.me.line = 6558;
   fra.me.meth = LOCATE_parser___ReduceAction164___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -21909,25 +21897,25 @@ void parser___ReduceAction164___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6562 */
+  /* ./parser//parser.nit:6560 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6563 */
+  /* ./parser//parser.nit:6561 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6565 */
+  /* ./parser//parser.nit:6563 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TStarship, ID_TStarship)) /*cast nullable TStarship*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6565);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6563);
   }
-  /* ./parser//parser.nit:6566 */
+  /* ./parser//parser.nit:6564 */
   fra.me.REG[3] = NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[3]);
-  /* ./parser//parser.nit:6569 */
+  /* ./parser//parser.nit:6567 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6570 */
+  /* ./parser//parser.nit:6568 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction164____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6570);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6568);
   }
   REGB0 = ATTR_parser___ReduceAction164____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -21943,7 +21931,7 @@ void parser___ReduceAction164___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos167]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6573;
+  fra.me.line = 6571;
   fra.me.meth = LOCATE_parser___ReduceAction164___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21951,7 +21939,7 @@ void parser___ReduceAction164___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6573 */
+  /* ./parser//parser.nit:6571 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction164____goto(fra.me.REG[1]) = REGB0;
@@ -21965,7 +21953,7 @@ void parser___ReduceAction165___action(val_t p0, val_t p1){
   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.line = 6575;
   fra.me.meth = LOCATE_parser___ReduceAction165___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -21976,33 +21964,33 @@ void parser___ReduceAction165___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6579 */
+  /* ./parser//parser.nit:6577 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6580 */
+  /* ./parser//parser.nit:6578 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6581 */
+  /* ./parser//parser.nit:6579 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6583 */
+  /* ./parser//parser.nit:6581 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6583);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6581);
   }
-  /* ./parser//parser.nit:6585 */
+  /* ./parser//parser.nit:6583 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6585);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6583);
   }
-  /* ./parser//parser.nit:6586 */
+  /* ./parser//parser.nit:6584 */
   fra.me.REG[3] = NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6590 */
+  /* ./parser//parser.nit:6588 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6591 */
+  /* ./parser//parser.nit:6589 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction165____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6591);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6589);
   }
   REGB0 = ATTR_parser___ReduceAction165____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22018,7 +22006,7 @@ void parser___ReduceAction165___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos168]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6594;
+  fra.me.line = 6592;
   fra.me.meth = LOCATE_parser___ReduceAction165___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22026,7 +22014,7 @@ void parser___ReduceAction165___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6594 */
+  /* ./parser//parser.nit:6592 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction165____goto(fra.me.REG[1]) = REGB0;
@@ -22040,7 +22028,7 @@ void parser___ReduceAction166___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6598;
+  fra.me.line = 6596;
   fra.me.meth = LOCATE_parser___ReduceAction166___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22052,41 +22040,41 @@ void parser___ReduceAction166___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6600 */
+  /* ./parser//parser.nit:6598 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6601 */
+  /* ./parser//parser.nit:6599 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6602 */
+  /* ./parser//parser.nit:6600 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6603 */
+  /* ./parser//parser.nit:6601 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6605 */
+  /* ./parser//parser.nit:6603 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TObra, ID_TObra)) /*cast nullable TObra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6605);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6603);
   }
-  /* ./parser//parser.nit:6607 */
+  /* ./parser//parser.nit:6605 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TCbra, ID_TCbra)) /*cast nullable TCbra*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6607);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6605);
   }
-  /* ./parser//parser.nit:6609 */
+  /* ./parser//parser.nit:6607 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6609);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6607);
   }
-  /* ./parser//parser.nit:6610 */
+  /* ./parser//parser.nit:6608 */
   fra.me.REG[3] = NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:6615 */
+  /* ./parser//parser.nit:6613 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6616 */
+  /* ./parser//parser.nit:6614 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction166____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6616);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6614);
   }
   REGB0 = ATTR_parser___ReduceAction166____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22102,7 +22090,7 @@ void parser___ReduceAction166___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos169]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6619;
+  fra.me.line = 6617;
   fra.me.meth = LOCATE_parser___ReduceAction166___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22110,7 +22098,7 @@ void parser___ReduceAction166___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6619 */
+  /* ./parser//parser.nit:6617 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction166____goto(fra.me.REG[1]) = REGB0;
@@ -22124,7 +22112,7 @@ void parser___ReduceAction167___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6623;
+  fra.me.line = 6621;
   fra.me.meth = LOCATE_parser___ReduceAction167___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -22137,40 +22125,40 @@ void parser___ReduceAction167___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6625 */
+  /* ./parser//parser.nit:6623 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6626 */
+  /* ./parser//parser.nit:6624 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6627 */
+  /* ./parser//parser.nit:6625 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6628 */
+  /* ./parser//parser.nit:6626 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6629 */
+  /* ./parser//parser.nit:6627 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6631 */
+  /* ./parser//parser.nit:6629 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6631);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6629);
   }
-  /* ./parser//parser.nit:6633 */
+  /* ./parser//parser.nit:6631 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6633);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6631);
   }
-  /* ./parser//parser.nit:6634 */
+  /* ./parser//parser.nit:6632 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:6635 */
+  /* ./parser//parser.nit:6633 */
   fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* ./parser//parser.nit:6640 */
+  /* ./parser//parser.nit:6638 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:6641 */
+  /* ./parser//parser.nit:6639 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction167____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6641);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6639);
   }
   REGB0 = ATTR_parser___ReduceAction167____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22186,7 +22174,7 @@ void parser___ReduceAction167___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos170]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6644;
+  fra.me.line = 6642;
   fra.me.meth = LOCATE_parser___ReduceAction167___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22194,7 +22182,7 @@ void parser___ReduceAction167___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6644 */
+  /* ./parser//parser.nit:6642 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction167____goto(fra.me.REG[1]) = REGB0;
@@ -22208,7 +22196,7 @@ void parser___ReduceAction168___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6648;
+  fra.me.line = 6646;
   fra.me.meth = LOCATE_parser___ReduceAction168___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -22222,51 +22210,51 @@ void parser___ReduceAction168___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6650 */
+  /* ./parser//parser.nit:6648 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6651 */
+  /* ./parser//parser.nit:6649 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6652 */
+  /* ./parser//parser.nit:6650 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6653 */
+  /* ./parser//parser.nit:6651 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6654 */
+  /* ./parser//parser.nit:6652 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6655 */
+  /* ./parser//parser.nit:6653 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6657 */
+  /* ./parser//parser.nit:6655 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6657);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6655);
   }
-  /* ./parser//parser.nit:6658 */
+  /* ./parser//parser.nit:6656 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* ./parser//parser.nit:6660 */
+  /* ./parser//parser.nit:6658 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6660);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6658);
   }
-  /* ./parser//parser.nit:6662 */
+  /* ./parser//parser.nit:6660 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6662);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6660);
   }
-  /* ./parser//parser.nit:6663 */
+  /* ./parser//parser.nit:6661 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:6664 */
+  /* ./parser//parser.nit:6662 */
   fra.me.REG[7] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[6], fra.me.REG[4], fra.me.REG[7]);
-  /* ./parser//parser.nit:6669 */
+  /* ./parser//parser.nit:6667 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:6670 */
+  /* ./parser//parser.nit:6668 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction168____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6670);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6668);
   }
   REGB0 = ATTR_parser___ReduceAction168____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22282,7 +22270,7 @@ void parser___ReduceAction168___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos171]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6673;
+  fra.me.line = 6671;
   fra.me.meth = LOCATE_parser___ReduceAction168___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22290,7 +22278,7 @@ void parser___ReduceAction168___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6673 */
+  /* ./parser//parser.nit:6671 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction168____goto(fra.me.REG[1]) = REGB0;
@@ -22304,7 +22292,7 @@ void parser___ReduceAction169___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6677;
+  fra.me.line = 6675;
   fra.me.meth = LOCATE_parser___ReduceAction169___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22316,31 +22304,31 @@ void parser___ReduceAction169___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6679 */
+  /* ./parser//parser.nit:6677 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6680 */
+  /* ./parser//parser.nit:6678 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6681 */
+  /* ./parser//parser.nit:6679 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6682 */
+  /* ./parser//parser.nit:6680 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6683 */
+  /* ./parser//parser.nit:6681 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6685 */
+  /* ./parser//parser.nit:6683 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6685);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6683);
   }
-  /* ./parser//parser.nit:6686 */
+  /* ./parser//parser.nit:6684 */
   fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* ./parser//parser.nit:6691 */
+  /* ./parser//parser.nit:6689 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:6692 */
+  /* ./parser//parser.nit:6690 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction169____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6692);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6690);
   }
   REGB0 = ATTR_parser___ReduceAction169____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22356,7 +22344,7 @@ void parser___ReduceAction169___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos172]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6695;
+  fra.me.line = 6693;
   fra.me.meth = LOCATE_parser___ReduceAction169___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22364,7 +22352,7 @@ void parser___ReduceAction169___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6695 */
+  /* ./parser//parser.nit:6693 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction169____goto(fra.me.REG[1]) = REGB0;
@@ -22378,7 +22366,7 @@ void parser___ReduceAction170___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6699;
+  fra.me.line = 6697;
   fra.me.meth = LOCATE_parser___ReduceAction170___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -22391,42 +22379,42 @@ void parser___ReduceAction170___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6701 */
+  /* ./parser//parser.nit:6699 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6702 */
+  /* ./parser//parser.nit:6700 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6703 */
+  /* ./parser//parser.nit:6701 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6704 */
+  /* ./parser//parser.nit:6702 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6705 */
+  /* ./parser//parser.nit:6703 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6706 */
+  /* ./parser//parser.nit:6704 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6708 */
+  /* ./parser//parser.nit:6706 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6708);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6706);
   }
-  /* ./parser//parser.nit:6709 */
+  /* ./parser//parser.nit:6707 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:6711 */
+  /* ./parser//parser.nit:6709 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6711);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6709);
   }
-  /* ./parser//parser.nit:6712 */
+  /* ./parser//parser.nit:6710 */
   fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[3], fra.me.REG[6]);
-  /* ./parser//parser.nit:6717 */
+  /* ./parser//parser.nit:6715 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:6718 */
+  /* ./parser//parser.nit:6716 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction170____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6718);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6716);
   }
   REGB0 = ATTR_parser___ReduceAction170____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22442,7 +22430,7 @@ void parser___ReduceAction170___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos173]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6721;
+  fra.me.line = 6719;
   fra.me.meth = LOCATE_parser___ReduceAction170___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22450,7 +22438,7 @@ void parser___ReduceAction170___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6721 */
+  /* ./parser//parser.nit:6719 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction170____goto(fra.me.REG[1]) = REGB0;
@@ -22464,7 +22452,7 @@ void parser___ReduceAction171___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6725;
+  fra.me.line = 6723;
   fra.me.meth = LOCATE_parser___ReduceAction171___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22476,32 +22464,32 @@ void parser___ReduceAction171___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6727 */
+  /* ./parser//parser.nit:6725 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6728 */
+  /* ./parser//parser.nit:6726 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6729 */
+  /* ./parser//parser.nit:6727 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6730 */
+  /* ./parser//parser.nit:6728 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6732 */
+  /* ./parser//parser.nit:6730 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6732);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6730);
   }
-  /* ./parser//parser.nit:6733 */
+  /* ./parser//parser.nit:6731 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:6734 */
+  /* ./parser//parser.nit:6732 */
   fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], NIT_NULL, fra.me.REG[5]);
-  /* ./parser//parser.nit:6739 */
+  /* ./parser//parser.nit:6737 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:6740 */
+  /* ./parser//parser.nit:6738 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction171____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6740);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6738);
   }
   REGB0 = ATTR_parser___ReduceAction171____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22517,7 +22505,7 @@ void parser___ReduceAction171___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos174]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6743;
+  fra.me.line = 6741;
   fra.me.meth = LOCATE_parser___ReduceAction171___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22525,7 +22513,7 @@ void parser___ReduceAction171___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6743 */
+  /* ./parser//parser.nit:6741 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction171____goto(fra.me.REG[1]) = REGB0;
@@ -22539,7 +22527,7 @@ void parser___ReduceAction172___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6747;
+  fra.me.line = 6745;
   fra.me.meth = LOCATE_parser___ReduceAction172___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -22552,43 +22540,43 @@ void parser___ReduceAction172___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6749 */
+  /* ./parser//parser.nit:6747 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6750 */
+  /* ./parser//parser.nit:6748 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6751 */
+  /* ./parser//parser.nit:6749 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6752 */
+  /* ./parser//parser.nit:6750 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6753 */
+  /* ./parser//parser.nit:6751 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6755 */
+  /* ./parser//parser.nit:6753 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6755);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6753);
   }
-  /* ./parser//parser.nit:6756 */
+  /* ./parser//parser.nit:6754 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:6758 */
+  /* ./parser//parser.nit:6756 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6758);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6756);
   }
-  /* ./parser//parser.nit:6759 */
+  /* ./parser//parser.nit:6757 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:6760 */
+  /* ./parser//parser.nit:6758 */
   fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], NIT_NULL, fra.me.REG[6]);
-  /* ./parser//parser.nit:6765 */
+  /* ./parser//parser.nit:6763 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:6766 */
+  /* ./parser//parser.nit:6764 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction172____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6766);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6764);
   }
   REGB0 = ATTR_parser___ReduceAction172____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22604,7 +22592,7 @@ void parser___ReduceAction172___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos175]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6769;
+  fra.me.line = 6767;
   fra.me.meth = LOCATE_parser___ReduceAction172___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22612,7 +22600,7 @@ void parser___ReduceAction172___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6769 */
+  /* ./parser//parser.nit:6767 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction172____goto(fra.me.REG[1]) = REGB0;
@@ -22626,7 +22614,7 @@ void parser___ReduceAction173___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6773;
+  fra.me.line = 6771;
   fra.me.meth = LOCATE_parser___ReduceAction173___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -22637,23 +22625,23 @@ void parser___ReduceAction173___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6775 */
+  /* ./parser//parser.nit:6773 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6776 */
+  /* ./parser//parser.nit:6774 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6777 */
+  /* ./parser//parser.nit:6775 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6778 */
+  /* ./parser//parser.nit:6776 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6779 */
+  /* ./parser//parser.nit:6777 */
   fra.me.REG[4] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[3], NIT_NULL, fra.me.REG[4]);
-  /* ./parser//parser.nit:6784 */
+  /* ./parser//parser.nit:6782 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:6785 */
+  /* ./parser//parser.nit:6783 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction173____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6785);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6783);
   }
   REGB0 = ATTR_parser___ReduceAction173____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22669,7 +22657,7 @@ void parser___ReduceAction173___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos176]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6788;
+  fra.me.line = 6786;
   fra.me.meth = LOCATE_parser___ReduceAction173___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22677,7 +22665,7 @@ void parser___ReduceAction173___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6788 */
+  /* ./parser//parser.nit:6786 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction173____goto(fra.me.REG[1]) = REGB0;
@@ -22691,7 +22679,7 @@ void parser___ReduceAction174___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6792;
+  fra.me.line = 6790;
   fra.me.meth = LOCATE_parser___ReduceAction174___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22703,34 +22691,34 @@ void parser___ReduceAction174___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6794 */
+  /* ./parser//parser.nit:6792 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6795 */
+  /* ./parser//parser.nit:6793 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6796 */
+  /* ./parser//parser.nit:6794 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6797 */
+  /* ./parser//parser.nit:6795 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6798 */
+  /* ./parser//parser.nit:6796 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6800 */
+  /* ./parser//parser.nit:6798 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6800);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6798);
   }
-  /* ./parser//parser.nit:6801 */
+  /* ./parser//parser.nit:6799 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:6802 */
+  /* ./parser//parser.nit:6800 */
   fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], NIT_NULL, fra.me.REG[5]);
-  /* ./parser//parser.nit:6807 */
+  /* ./parser//parser.nit:6805 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:6808 */
+  /* ./parser//parser.nit:6806 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction174____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6808);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6806);
   }
   REGB0 = ATTR_parser___ReduceAction174____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22746,7 +22734,7 @@ void parser___ReduceAction174___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos177]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6811;
+  fra.me.line = 6809;
   fra.me.meth = LOCATE_parser___ReduceAction174___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22754,7 +22742,7 @@ void parser___ReduceAction174___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6811 */
+  /* ./parser//parser.nit:6809 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction174____goto(fra.me.REG[1]) = REGB0;
@@ -22768,7 +22756,7 @@ void parser___ReduceAction175___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6815;
+  fra.me.line = 6813;
   fra.me.meth = LOCATE_parser___ReduceAction175___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -22779,21 +22767,21 @@ void parser___ReduceAction175___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6817 */
+  /* ./parser//parser.nit:6815 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6818 */
+  /* ./parser//parser.nit:6816 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6819 */
+  /* ./parser//parser.nit:6817 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6820 */
+  /* ./parser//parser.nit:6818 */
   fra.me.REG[4] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[3], NIT_NULL, fra.me.REG[4]);
-  /* ./parser//parser.nit:6825 */
+  /* ./parser//parser.nit:6823 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:6826 */
+  /* ./parser//parser.nit:6824 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction175____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6826);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6824);
   }
   REGB0 = ATTR_parser___ReduceAction175____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22809,7 +22797,7 @@ void parser___ReduceAction175___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos178]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6829;
+  fra.me.line = 6827;
   fra.me.meth = LOCATE_parser___ReduceAction175___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22817,7 +22805,7 @@ void parser___ReduceAction175___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6829 */
+  /* ./parser//parser.nit:6827 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction175____goto(fra.me.REG[1]) = REGB0;
@@ -22831,7 +22819,7 @@ void parser___ReduceAction176___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6833;
+  fra.me.line = 6831;
   fra.me.meth = LOCATE_parser___ReduceAction176___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22843,32 +22831,32 @@ void parser___ReduceAction176___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6835 */
+  /* ./parser//parser.nit:6833 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6836 */
+  /* ./parser//parser.nit:6834 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6837 */
+  /* ./parser//parser.nit:6835 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6838 */
+  /* ./parser//parser.nit:6836 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6840 */
+  /* ./parser//parser.nit:6838 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6840);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6838);
   }
-  /* ./parser//parser.nit:6841 */
+  /* ./parser//parser.nit:6839 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:6842 */
+  /* ./parser//parser.nit:6840 */
   fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], NIT_NULL, fra.me.REG[5]);
-  /* ./parser//parser.nit:6847 */
+  /* ./parser//parser.nit:6845 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:6848 */
+  /* ./parser//parser.nit:6846 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction176____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6848);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6846);
   }
   REGB0 = ATTR_parser___ReduceAction176____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22884,7 +22872,7 @@ void parser___ReduceAction176___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos179]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6851;
+  fra.me.line = 6849;
   fra.me.meth = LOCATE_parser___ReduceAction176___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22892,7 +22880,7 @@ void parser___ReduceAction176___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6851 */
+  /* ./parser//parser.nit:6849 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction176____goto(fra.me.REG[1]) = REGB0;
@@ -22906,7 +22894,7 @@ void parser___ReduceAction177___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6855;
+  fra.me.line = 6853;
   fra.me.meth = LOCATE_parser___ReduceAction177___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -22918,29 +22906,29 @@ void parser___ReduceAction177___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6857 */
+  /* ./parser//parser.nit:6855 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6858 */
+  /* ./parser//parser.nit:6856 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6859 */
+  /* ./parser//parser.nit:6857 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6860 */
+  /* ./parser//parser.nit:6858 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6862 */
+  /* ./parser//parser.nit:6860 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6862);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6860);
   }
-  /* ./parser//parser.nit:6863 */
+  /* ./parser//parser.nit:6861 */
   fra.me.REG[5] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* ./parser//parser.nit:6868 */
+  /* ./parser//parser.nit:6866 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:6869 */
+  /* ./parser//parser.nit:6867 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction177____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6869);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6867);
   }
   REGB0 = ATTR_parser___ReduceAction177____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -22956,7 +22944,7 @@ void parser___ReduceAction177___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos180]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6872;
+  fra.me.line = 6870;
   fra.me.meth = LOCATE_parser___ReduceAction177___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -22964,7 +22952,7 @@ void parser___ReduceAction177___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6872 */
+  /* ./parser//parser.nit:6870 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction177____goto(fra.me.REG[1]) = REGB0;
@@ -22978,7 +22966,7 @@ void parser___ReduceAction178___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6876;
+  fra.me.line = 6874;
   fra.me.meth = LOCATE_parser___ReduceAction178___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -22991,40 +22979,40 @@ void parser___ReduceAction178___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6878 */
+  /* ./parser//parser.nit:6876 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6879 */
+  /* ./parser//parser.nit:6877 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6880 */
+  /* ./parser//parser.nit:6878 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6881 */
+  /* ./parser//parser.nit:6879 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6882 */
+  /* ./parser//parser.nit:6880 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6884 */
+  /* ./parser//parser.nit:6882 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6884);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6882);
   }
-  /* ./parser//parser.nit:6885 */
+  /* ./parser//parser.nit:6883 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:6887 */
+  /* ./parser//parser.nit:6885 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6887);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6885);
   }
-  /* ./parser//parser.nit:6888 */
+  /* ./parser//parser.nit:6886 */
   fra.me.REG[6] = NEW_ASignature_parser_prod___ASignature___init_asignature(fra.me.REG[5], fra.me.REG[3], fra.me.REG[6]);
-  /* ./parser//parser.nit:6893 */
+  /* ./parser//parser.nit:6891 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:6894 */
+  /* ./parser//parser.nit:6892 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction178____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6894);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6892);
   }
   REGB0 = ATTR_parser___ReduceAction178____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23040,7 +23028,7 @@ void parser___ReduceAction178___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos181]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6897;
+  fra.me.line = 6895;
   fra.me.meth = LOCATE_parser___ReduceAction178___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23048,7 +23036,7 @@ void parser___ReduceAction178___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6897 */
+  /* ./parser//parser.nit:6895 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction178____goto(fra.me.REG[1]) = REGB0;
@@ -23063,7 +23051,7 @@ void parser___ReduceAction179___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6901;
+  fra.me.line = 6899;
   fra.me.meth = LOCATE_parser___ReduceAction179___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23074,21 +23062,21 @@ void parser___ReduceAction179___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6903 */
+  /* ./parser//parser.nit:6901 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6904 */
+  /* ./parser//parser.nit:6902 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6905 */
+  /* ./parser//parser.nit:6903 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6906 */
+  /* ./parser//parser.nit:6904 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6907 */
+  /* ./parser//parser.nit:6905 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6908 */
+  /* ./parser//parser.nit:6906 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6909 */
+  /* ./parser//parser.nit:6907 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6911 */
+  /* ./parser//parser.nit:6909 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -23103,16 +23091,16 @@ void parser___ReduceAction179___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:6912 */
+    /* ./parser//parser.nit:6910 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:6914 */
+  /* ./parser//parser.nit:6912 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:6915 */
+  /* ./parser//parser.nit:6913 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction179____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6915);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6913);
   }
   REGB0 = ATTR_parser___ReduceAction179____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23128,7 +23116,7 @@ void parser___ReduceAction179___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos182]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6918;
+  fra.me.line = 6916;
   fra.me.meth = LOCATE_parser___ReduceAction179___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23136,7 +23124,7 @@ void parser___ReduceAction179___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6918 */
+  /* ./parser//parser.nit:6916 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction179____goto(fra.me.REG[1]) = REGB0;
@@ -23151,7 +23139,7 @@ void parser___ReduceAction180___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6922;
+  fra.me.line = 6920;
   fra.me.meth = LOCATE_parser___ReduceAction180___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -23163,29 +23151,29 @@ void parser___ReduceAction180___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6924 */
+  /* ./parser//parser.nit:6922 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6925 */
+  /* ./parser//parser.nit:6923 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6926 */
+  /* ./parser//parser.nit:6924 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6927 */
+  /* ./parser//parser.nit:6925 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6928 */
+  /* ./parser//parser.nit:6926 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6929 */
+  /* ./parser//parser.nit:6927 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6930 */
+  /* ./parser//parser.nit:6928 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6931 */
+  /* ./parser//parser.nit:6929 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6934 */
+  /* ./parser//parser.nit:6932 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6934);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6932);
   }
-  /* ./parser//parser.nit:6935 */
+  /* ./parser//parser.nit:6933 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -23200,19 +23188,19 @@ void parser___ReduceAction180___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:6936 */
+    /* ./parser//parser.nit:6934 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:6938 */
+  /* ./parser//parser.nit:6936 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:6939 */
+  /* ./parser//parser.nit:6937 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:6940 */
+  /* ./parser//parser.nit:6938 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction180____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6940);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6938);
   }
   REGB0 = ATTR_parser___ReduceAction180____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23228,7 +23216,7 @@ void parser___ReduceAction180___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos183]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6943;
+  fra.me.line = 6941;
   fra.me.meth = LOCATE_parser___ReduceAction180___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23236,7 +23224,7 @@ void parser___ReduceAction180___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6943 */
+  /* ./parser//parser.nit:6941 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction180____goto(fra.me.REG[1]) = REGB0;
@@ -23250,7 +23238,7 @@ void parser___ReduceAction181___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6947;
+  fra.me.line = 6945;
   fra.me.meth = LOCATE_parser___ReduceAction181___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23260,23 +23248,23 @@ void parser___ReduceAction181___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6949 */
+  /* ./parser//parser.nit:6947 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6950 */
+  /* ./parser//parser.nit:6948 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6951 */
+  /* ./parser//parser.nit:6949 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6952 */
+  /* ./parser//parser.nit:6950 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6953 */
+  /* ./parser//parser.nit:6951 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:6954 */
+  /* ./parser//parser.nit:6952 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6955 */
+  /* ./parser//parser.nit:6953 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction181____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6955);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6953);
   }
   REGB0 = ATTR_parser___ReduceAction181____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23292,7 +23280,7 @@ void parser___ReduceAction181___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos184]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6958;
+  fra.me.line = 6956;
   fra.me.meth = LOCATE_parser___ReduceAction181___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23300,7 +23288,7 @@ void parser___ReduceAction181___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6958 */
+  /* ./parser//parser.nit:6956 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction181____goto(fra.me.REG[1]) = REGB0;
@@ -23314,7 +23302,7 @@ void parser___ReduceAction182___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6962;
+  fra.me.line = 6960;
   fra.me.meth = LOCATE_parser___ReduceAction182___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23325,21 +23313,21 @@ void parser___ReduceAction182___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6964 */
+  /* ./parser//parser.nit:6962 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6965 */
+  /* ./parser//parser.nit:6963 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6966 */
+  /* ./parser//parser.nit:6964 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6967 */
+  /* ./parser//parser.nit:6965 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6969 */
+  /* ./parser//parser.nit:6967 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6970 */
+  /* ./parser//parser.nit:6968 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction182____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6970);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6968);
   }
   REGB0 = ATTR_parser___ReduceAction182____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23355,7 +23343,7 @@ void parser___ReduceAction182___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos185]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6973;
+  fra.me.line = 6971;
   fra.me.meth = LOCATE_parser___ReduceAction182___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23363,7 +23351,7 @@ void parser___ReduceAction182___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6973 */
+  /* ./parser//parser.nit:6971 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction182____goto(fra.me.REG[1]) = REGB0;
@@ -23377,7 +23365,7 @@ void parser___ReduceAction183___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6977;
+  fra.me.line = 6975;
   fra.me.meth = LOCATE_parser___ReduceAction183___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -23387,25 +23375,25 @@ void parser___ReduceAction183___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6979 */
+  /* ./parser//parser.nit:6977 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6980 */
+  /* ./parser//parser.nit:6978 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:6982 */
+  /* ./parser//parser.nit:6980 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 6982);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 6980);
   }
-  /* ./parser//parser.nit:6983 */
+  /* ./parser//parser.nit:6981 */
   fra.me.REG[3] = NEW_AParam_parser_prod___AParam___init_aparam(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:6988 */
+  /* ./parser//parser.nit:6986 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:6989 */
+  /* ./parser//parser.nit:6987 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction183____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6989);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 6987);
   }
   REGB0 = ATTR_parser___ReduceAction183____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23421,7 +23409,7 @@ void parser___ReduceAction183___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos186]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6992;
+  fra.me.line = 6990;
   fra.me.meth = LOCATE_parser___ReduceAction183___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23429,7 +23417,7 @@ void parser___ReduceAction183___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:6992 */
+  /* ./parser//parser.nit:6990 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction183____goto(fra.me.REG[1]) = REGB0;
@@ -23443,7 +23431,7 @@ void parser___ReduceAction184___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 6996;
+  fra.me.line = 6994;
   fra.me.meth = LOCATE_parser___ReduceAction184___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23454,33 +23442,33 @@ void parser___ReduceAction184___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:6998 */
+  /* ./parser//parser.nit:6996 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:6999 */
+  /* ./parser//parser.nit:6997 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7000 */
+  /* ./parser//parser.nit:6998 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7002 */
+  /* ./parser//parser.nit:7000 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7002);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7000);
   }
-  /* ./parser//parser.nit:7004 */
+  /* ./parser//parser.nit:7002 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7004);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7002);
   }
-  /* ./parser//parser.nit:7005 */
+  /* ./parser//parser.nit:7003 */
   fra.me.REG[3] = NEW_AParam_parser_prod___AParam___init_aparam(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:7010 */
+  /* ./parser//parser.nit:7008 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7011 */
+  /* ./parser//parser.nit:7009 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction184____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7011);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7009);
   }
   REGB0 = ATTR_parser___ReduceAction184____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23496,7 +23484,7 @@ void parser___ReduceAction184___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos187]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7014;
+  fra.me.line = 7012;
   fra.me.meth = LOCATE_parser___ReduceAction184___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23504,7 +23492,7 @@ void parser___ReduceAction184___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7014 */
+  /* ./parser//parser.nit:7012 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction184____goto(fra.me.REG[1]) = REGB0;
@@ -23518,7 +23506,7 @@ void parser___ReduceAction185___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7018;
+  fra.me.line = 7016;
   fra.me.meth = LOCATE_parser___ReduceAction185___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -23530,41 +23518,41 @@ void parser___ReduceAction185___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7020 */
+  /* ./parser//parser.nit:7018 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7021 */
+  /* ./parser//parser.nit:7019 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7022 */
+  /* ./parser//parser.nit:7020 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7023 */
+  /* ./parser//parser.nit:7021 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7025 */
+  /* ./parser//parser.nit:7023 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7025);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7023);
   }
-  /* ./parser//parser.nit:7027 */
+  /* ./parser//parser.nit:7025 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7027);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7025);
   }
-  /* ./parser//parser.nit:7029 */
+  /* ./parser//parser.nit:7027 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TDotdotdot, ID_TDotdotdot)) /*cast nullable TDotdotdot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7029);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7027);
   }
-  /* ./parser//parser.nit:7030 */
+  /* ./parser//parser.nit:7028 */
   fra.me.REG[3] = NEW_AParam_parser_prod___AParam___init_aparam(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7035 */
+  /* ./parser//parser.nit:7033 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7036 */
+  /* ./parser//parser.nit:7034 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction185____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7036);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7034);
   }
   REGB0 = ATTR_parser___ReduceAction185____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23580,7 +23568,7 @@ void parser___ReduceAction185___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos188]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7039;
+  fra.me.line = 7037;
   fra.me.meth = LOCATE_parser___ReduceAction185___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23588,7 +23576,7 @@ void parser___ReduceAction185___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7039 */
+  /* ./parser//parser.nit:7037 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction185____goto(fra.me.REG[1]) = REGB0;
@@ -23602,7 +23590,7 @@ void parser___ReduceAction186___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7043;
+  fra.me.line = 7041;
   fra.me.meth = LOCATE_parser___ReduceAction186___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -23613,30 +23601,30 @@ void parser___ReduceAction186___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7045 */
+  /* ./parser//parser.nit:7043 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7046 */
+  /* ./parser//parser.nit:7044 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7047 */
+  /* ./parser//parser.nit:7045 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7048 */
+  /* ./parser//parser.nit:7046 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7050 */
+  /* ./parser//parser.nit:7048 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7050);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7048);
   }
-  /* ./parser//parser.nit:7051 */
+  /* ./parser//parser.nit:7049 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:7052 */
+  /* ./parser//parser.nit:7050 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:7053 */
+  /* ./parser//parser.nit:7051 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction186____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7053);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7051);
   }
   REGB0 = ATTR_parser___ReduceAction186____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23652,7 +23640,7 @@ void parser___ReduceAction186___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos189]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7056;
+  fra.me.line = 7054;
   fra.me.meth = LOCATE_parser___ReduceAction186___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23660,7 +23648,7 @@ void parser___ReduceAction186___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7056 */
+  /* ./parser//parser.nit:7054 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction186____goto(fra.me.REG[1]) = REGB0;
@@ -23674,7 +23662,7 @@ void parser___ReduceAction187___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7060;
+  fra.me.line = 7058;
   fra.me.meth = LOCATE_parser___ReduceAction187___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -23686,43 +23674,43 @@ void parser___ReduceAction187___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7062 */
+  /* ./parser//parser.nit:7060 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7063 */
+  /* ./parser//parser.nit:7061 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7064 */
+  /* ./parser//parser.nit:7062 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7065 */
+  /* ./parser//parser.nit:7063 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7066 */
+  /* ./parser//parser.nit:7064 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7068 */
+  /* ./parser//parser.nit:7066 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7068);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7066);
   }
-  /* ./parser//parser.nit:7070 */
+  /* ./parser//parser.nit:7068 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7070);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7068);
   }
-  /* ./parser//parser.nit:7072 */
+  /* ./parser//parser.nit:7070 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7072);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7070);
   }
-  /* ./parser//parser.nit:7073 */
+  /* ./parser//parser.nit:7071 */
   fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:7080 */
+  /* ./parser//parser.nit:7078 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7081 */
+  /* ./parser//parser.nit:7079 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction187____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7081);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7079);
   }
   REGB0 = ATTR_parser___ReduceAction187____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23738,7 +23726,7 @@ void parser___ReduceAction187___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos190]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7084;
+  fra.me.line = 7082;
   fra.me.meth = LOCATE_parser___ReduceAction187___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23746,7 +23734,7 @@ void parser___ReduceAction187___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7084 */
+  /* ./parser//parser.nit:7082 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction187____goto(fra.me.REG[1]) = REGB0;
@@ -23760,7 +23748,7 @@ void parser___ReduceAction188___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7088;
+  fra.me.line = 7086;
   fra.me.meth = LOCATE_parser___ReduceAction188___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -23773,51 +23761,51 @@ void parser___ReduceAction188___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7090 */
+  /* ./parser//parser.nit:7088 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7091 */
+  /* ./parser//parser.nit:7089 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7092 */
+  /* ./parser//parser.nit:7090 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7093 */
+  /* ./parser//parser.nit:7091 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7094 */
+  /* ./parser//parser.nit:7092 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7095 */
+  /* ./parser//parser.nit:7093 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7097 */
+  /* ./parser//parser.nit:7095 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7097);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7095);
   }
-  /* ./parser//parser.nit:7099 */
+  /* ./parser//parser.nit:7097 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7099);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7097);
   }
-  /* ./parser//parser.nit:7101 */
+  /* ./parser//parser.nit:7099 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7101);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7099);
   }
-  /* ./parser//parser.nit:7103 */
+  /* ./parser//parser.nit:7101 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7103);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7101);
   }
-  /* ./parser//parser.nit:7104 */
+  /* ./parser//parser.nit:7102 */
   fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:7111 */
+  /* ./parser//parser.nit:7109 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7112 */
+  /* ./parser//parser.nit:7110 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction188____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7112);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7110);
   }
   REGB0 = ATTR_parser___ReduceAction188____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23833,7 +23821,7 @@ void parser___ReduceAction188___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos191]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7115;
+  fra.me.line = 7113;
   fra.me.meth = LOCATE_parser___ReduceAction188___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23841,7 +23829,7 @@ void parser___ReduceAction188___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7115 */
+  /* ./parser//parser.nit:7113 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction188____goto(fra.me.REG[1]) = REGB0;
@@ -23855,7 +23843,7 @@ void parser___ReduceAction189___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7119;
+  fra.me.line = 7117;
   fra.me.meth = LOCATE_parser___ReduceAction189___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -23868,53 +23856,53 @@ void parser___ReduceAction189___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7121 */
+  /* ./parser//parser.nit:7119 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7122 */
+  /* ./parser//parser.nit:7120 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7123 */
+  /* ./parser//parser.nit:7121 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7124 */
+  /* ./parser//parser.nit:7122 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7125 */
+  /* ./parser//parser.nit:7123 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7126 */
+  /* ./parser//parser.nit:7124 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7127 */
+  /* ./parser//parser.nit:7125 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7129 */
+  /* ./parser//parser.nit:7127 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7129);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7127);
   }
-  /* ./parser//parser.nit:7131 */
+  /* ./parser//parser.nit:7129 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7131);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7129);
   }
-  /* ./parser//parser.nit:7133 */
+  /* ./parser//parser.nit:7131 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7133);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7131);
   }
-  /* ./parser//parser.nit:7135 */
+  /* ./parser//parser.nit:7133 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7135);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7133);
   }
-  /* ./parser//parser.nit:7136 */
+  /* ./parser//parser.nit:7134 */
   fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7143 */
+  /* ./parser//parser.nit:7141 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7144 */
+  /* ./parser//parser.nit:7142 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction189____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7144);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7142);
   }
   REGB0 = ATTR_parser___ReduceAction189____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -23930,7 +23918,7 @@ void parser___ReduceAction189___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos192]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7147;
+  fra.me.line = 7145;
   fra.me.meth = LOCATE_parser___ReduceAction189___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23938,7 +23926,7 @@ void parser___ReduceAction189___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7147 */
+  /* ./parser//parser.nit:7145 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction189____goto(fra.me.REG[1]) = REGB0;
@@ -23952,7 +23940,7 @@ void parser___ReduceAction190___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7151;
+  fra.me.line = 7149;
   fra.me.meth = LOCATE_parser___ReduceAction190___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -23966,61 +23954,61 @@ void parser___ReduceAction190___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7153 */
+  /* ./parser//parser.nit:7151 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7154 */
+  /* ./parser//parser.nit:7152 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7155 */
+  /* ./parser//parser.nit:7153 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7156 */
+  /* ./parser//parser.nit:7154 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7157 */
+  /* ./parser//parser.nit:7155 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7158 */
+  /* ./parser//parser.nit:7156 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7159 */
+  /* ./parser//parser.nit:7157 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7160 */
+  /* ./parser//parser.nit:7158 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7162 */
+  /* ./parser//parser.nit:7160 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7162);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7160);
   }
-  /* ./parser//parser.nit:7164 */
+  /* ./parser//parser.nit:7162 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7164);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7162);
   }
-  /* ./parser//parser.nit:7166 */
+  /* ./parser//parser.nit:7164 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7166);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7164);
   }
-  /* ./parser//parser.nit:7168 */
+  /* ./parser//parser.nit:7166 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7168);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7166);
   }
-  /* ./parser//parser.nit:7170 */
+  /* ./parser//parser.nit:7168 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7170);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7168);
   }
-  /* ./parser//parser.nit:7171 */
+  /* ./parser//parser.nit:7169 */
   fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7178 */
+  /* ./parser//parser.nit:7176 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7179 */
+  /* ./parser//parser.nit:7177 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction190____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7179);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7177);
   }
   REGB0 = ATTR_parser___ReduceAction190____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24036,7 +24024,7 @@ void parser___ReduceAction190___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos193]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7182;
+  fra.me.line = 7180;
   fra.me.meth = LOCATE_parser___ReduceAction190___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24044,7 +24032,7 @@ void parser___ReduceAction190___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7182 */
+  /* ./parser//parser.nit:7180 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction190____goto(fra.me.REG[1]) = REGB0;
@@ -24058,7 +24046,7 @@ void parser___ReduceAction191___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7186;
+  fra.me.line = 7184;
   fra.me.meth = LOCATE_parser___ReduceAction191___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -24071,55 +24059,55 @@ void parser___ReduceAction191___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7188 */
+  /* ./parser//parser.nit:7186 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7189 */
+  /* ./parser//parser.nit:7187 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7190 */
+  /* ./parser//parser.nit:7188 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7191 */
+  /* ./parser//parser.nit:7189 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7192 */
+  /* ./parser//parser.nit:7190 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7193 */
+  /* ./parser//parser.nit:7191 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7194 */
+  /* ./parser//parser.nit:7192 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7195 */
+  /* ./parser//parser.nit:7193 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7197 */
+  /* ./parser//parser.nit:7195 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7197);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7195);
   }
-  /* ./parser//parser.nit:7199 */
+  /* ./parser//parser.nit:7197 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7199);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7197);
   }
-  /* ./parser//parser.nit:7201 */
+  /* ./parser//parser.nit:7199 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7201);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7199);
   }
-  /* ./parser//parser.nit:7203 */
+  /* ./parser//parser.nit:7201 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7203);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7201);
   }
-  /* ./parser//parser.nit:7204 */
+  /* ./parser//parser.nit:7202 */
   fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(NIT_NULL, fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7211 */
+  /* ./parser//parser.nit:7209 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7212 */
+  /* ./parser//parser.nit:7210 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction191____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7212);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7210);
   }
   REGB0 = ATTR_parser___ReduceAction191____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24135,7 +24123,7 @@ void parser___ReduceAction191___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos194]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7215;
+  fra.me.line = 7213;
   fra.me.meth = LOCATE_parser___ReduceAction191___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24143,7 +24131,7 @@ void parser___ReduceAction191___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7215 */
+  /* ./parser//parser.nit:7213 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction191____goto(fra.me.REG[1]) = REGB0;
@@ -24157,7 +24145,7 @@ void parser___ReduceAction192___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7219;
+  fra.me.line = 7217;
   fra.me.meth = LOCATE_parser___ReduceAction192___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -24171,63 +24159,63 @@ void parser___ReduceAction192___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7221 */
+  /* ./parser//parser.nit:7219 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7222 */
+  /* ./parser//parser.nit:7220 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7223 */
+  /* ./parser//parser.nit:7221 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7224 */
+  /* ./parser//parser.nit:7222 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7225 */
+  /* ./parser//parser.nit:7223 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7226 */
+  /* ./parser//parser.nit:7224 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7227 */
+  /* ./parser//parser.nit:7225 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7228 */
+  /* ./parser//parser.nit:7226 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7229 */
+  /* ./parser//parser.nit:7227 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7231 */
+  /* ./parser//parser.nit:7229 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7231);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7229);
   }
-  /* ./parser//parser.nit:7233 */
+  /* ./parser//parser.nit:7231 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7233);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7231);
   }
-  /* ./parser//parser.nit:7235 */
+  /* ./parser//parser.nit:7233 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7235);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7233);
   }
-  /* ./parser//parser.nit:7237 */
+  /* ./parser//parser.nit:7235 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ASignature, ID_ASignature)) /*cast nullable ASignature*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7237);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7235);
   }
-  /* ./parser//parser.nit:7239 */
+  /* ./parser//parser.nit:7237 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7239);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7237);
   }
-  /* ./parser//parser.nit:7240 */
+  /* ./parser//parser.nit:7238 */
   fra.me.REG[3] = NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7247 */
+  /* ./parser//parser.nit:7245 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7248 */
+  /* ./parser//parser.nit:7246 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction192____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7248);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7246);
   }
   REGB0 = ATTR_parser___ReduceAction192____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24243,7 +24231,7 @@ void parser___ReduceAction192___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos195]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7251;
+  fra.me.line = 7249;
   fra.me.meth = LOCATE_parser___ReduceAction192___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24251,7 +24239,7 @@ void parser___ReduceAction192___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7251 */
+  /* ./parser//parser.nit:7249 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction192____goto(fra.me.REG[1]) = REGB0;
@@ -24265,7 +24253,7 @@ void parser___ReduceAction193___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7255;
+  fra.me.line = 7253;
   fra.me.meth = LOCATE_parser___ReduceAction193___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -24275,25 +24263,25 @@ void parser___ReduceAction193___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7257 */
+  /* ./parser//parser.nit:7255 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7258 */
+  /* ./parser//parser.nit:7256 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7260 */
+  /* ./parser//parser.nit:7258 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7260);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7258);
   }
-  /* ./parser//parser.nit:7261 */
+  /* ./parser//parser.nit:7259 */
   fra.me.REG[3] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:7265 */
+  /* ./parser//parser.nit:7263 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7266 */
+  /* ./parser//parser.nit:7264 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction193____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7266);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7264);
   }
   REGB0 = ATTR_parser___ReduceAction193____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24309,7 +24297,7 @@ void parser___ReduceAction193___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos196]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7269;
+  fra.me.line = 7267;
   fra.me.meth = LOCATE_parser___ReduceAction193___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24317,7 +24305,7 @@ void parser___ReduceAction193___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7269 */
+  /* ./parser//parser.nit:7267 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction193____goto(fra.me.REG[1]) = REGB0;
@@ -24331,7 +24319,7 @@ void parser___ReduceAction194___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7273;
+  fra.me.line = 7271;
   fra.me.meth = LOCATE_parser___ReduceAction194___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -24342,27 +24330,27 @@ void parser___ReduceAction194___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7275 */
+  /* ./parser//parser.nit:7273 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7276 */
+  /* ./parser//parser.nit:7274 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7277 */
+  /* ./parser//parser.nit:7275 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7279 */
+  /* ./parser//parser.nit:7277 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7279);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7277);
   }
-  /* ./parser//parser.nit:7280 */
+  /* ./parser//parser.nit:7278 */
   fra.me.REG[4] = NEW_AType_parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[3], fra.me.REG[4]);
-  /* ./parser//parser.nit:7285 */
+  /* ./parser//parser.nit:7283 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:7286 */
+  /* ./parser//parser.nit:7284 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction194____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7286);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7284);
   }
   REGB0 = ATTR_parser___ReduceAction194____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24378,7 +24366,7 @@ void parser___ReduceAction194___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos197]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7289;
+  fra.me.line = 7287;
   fra.me.meth = LOCATE_parser___ReduceAction194___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24386,7 +24374,7 @@ void parser___ReduceAction194___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7289 */
+  /* ./parser//parser.nit:7287 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction194____goto(fra.me.REG[1]) = REGB0;
@@ -24400,7 +24388,7 @@ void parser___ReduceAction195___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7293;
+  fra.me.line = 7291;
   fra.me.meth = LOCATE_parser___ReduceAction195___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -24412,35 +24400,35 @@ void parser___ReduceAction195___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7295 */
+  /* ./parser//parser.nit:7293 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7296 */
+  /* ./parser//parser.nit:7294 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7297 */
+  /* ./parser//parser.nit:7295 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7298 */
+  /* ./parser//parser.nit:7296 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7300 */
+  /* ./parser//parser.nit:7298 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwnullable, ID_TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7300);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7298);
   }
-  /* ./parser//parser.nit:7302 */
+  /* ./parser//parser.nit:7300 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7302);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7300);
   }
-  /* ./parser//parser.nit:7303 */
+  /* ./parser//parser.nit:7301 */
   fra.me.REG[5] = NEW_AType_parser_prod___AType___init_atype(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
-  /* ./parser//parser.nit:7308 */
+  /* ./parser//parser.nit:7306 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:7309 */
+  /* ./parser//parser.nit:7307 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction195____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7309);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7307);
   }
   REGB0 = ATTR_parser___ReduceAction195____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24456,7 +24444,7 @@ void parser___ReduceAction195___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos198]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7312;
+  fra.me.line = 7310;
   fra.me.meth = LOCATE_parser___ReduceAction195___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24464,7 +24452,7 @@ void parser___ReduceAction195___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7312 */
+  /* ./parser//parser.nit:7310 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction195____goto(fra.me.REG[1]) = REGB0;
@@ -24478,7 +24466,7 @@ void parser___ReduceAction196___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7316;
+  fra.me.line = 7314;
   fra.me.meth = LOCATE_parser___ReduceAction196___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -24490,46 +24478,46 @@ void parser___ReduceAction196___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7318 */
+  /* ./parser//parser.nit:7316 */
   fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7317 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7318 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7319 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7320 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7321 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7322 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7323 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7324 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7325 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7327 */
+  /* ./parser//parser.nit:7325 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7327);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7325);
   }
-  /* ./parser//parser.nit:7329 */
+  /* ./parser//parser.nit:7327 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7329);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7327);
   }
-  /* ./parser//parser.nit:7330 */
+  /* ./parser//parser.nit:7328 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:7331 */
+  /* ./parser//parser.nit:7329 */
   fra.me.REG[5] = NEW_AType_parser_prod___AType___init_atype(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:7336 */
+  /* ./parser//parser.nit:7334 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:7337 */
+  /* ./parser//parser.nit:7335 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction196____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7337);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7335);
   }
   REGB0 = ATTR_parser___ReduceAction196____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24545,7 +24533,7 @@ void parser___ReduceAction196___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos199]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7340;
+  fra.me.line = 7338;
   fra.me.meth = LOCATE_parser___ReduceAction196___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24553,7 +24541,7 @@ void parser___ReduceAction196___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7340 */
+  /* ./parser//parser.nit:7338 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction196____goto(fra.me.REG[1]) = REGB0;
@@ -24567,7 +24555,7 @@ void parser___ReduceAction197___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7344;
+  fra.me.line = 7342;
   fra.me.meth = LOCATE_parser___ReduceAction197___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -24580,54 +24568,54 @@ void parser___ReduceAction197___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7346 */
+  /* ./parser//parser.nit:7344 */
   fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:7345 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:7346 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7347 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7348 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7349 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7350 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:7351 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7352 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7353 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7354 */
+  /* ./parser//parser.nit:7352 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7356 */
+  /* ./parser//parser.nit:7354 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwnullable, ID_TKwnullable)) /*cast nullable TKwnullable*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7356);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7354);
   }
-  /* ./parser//parser.nit:7358 */
+  /* ./parser//parser.nit:7356 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7358);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7356);
   }
-  /* ./parser//parser.nit:7360 */
+  /* ./parser//parser.nit:7358 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7360);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7358);
   }
-  /* ./parser//parser.nit:7361 */
+  /* ./parser//parser.nit:7359 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:7362 */
+  /* ./parser//parser.nit:7360 */
   fra.me.REG[6] = NEW_AType_parser_prod___AType___init_atype(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* ./parser//parser.nit:7367 */
+  /* ./parser//parser.nit:7365 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:7368 */
+  /* ./parser//parser.nit:7366 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction197____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7368);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7366);
   }
   REGB0 = ATTR_parser___ReduceAction197____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24643,7 +24631,7 @@ void parser___ReduceAction197___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos200]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7371;
+  fra.me.line = 7369;
   fra.me.meth = LOCATE_parser___ReduceAction197___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24651,7 +24639,7 @@ void parser___ReduceAction197___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7371 */
+  /* ./parser//parser.nit:7369 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction197____goto(fra.me.REG[1]) = REGB0;
@@ -24666,7 +24654,7 @@ void parser___ReduceAction198___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7375;
+  fra.me.line = 7373;
   fra.me.meth = LOCATE_parser___ReduceAction198___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -24677,13 +24665,13 @@ void parser___ReduceAction198___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7377 */
+  /* ./parser//parser.nit:7375 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7378 */
+  /* ./parser//parser.nit:7376 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7379 */
+  /* ./parser//parser.nit:7377 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7381 */
+  /* ./parser//parser.nit:7379 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -24698,16 +24686,16 @@ void parser___ReduceAction198___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:7382 */
+    /* ./parser//parser.nit:7380 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:7384 */
+  /* ./parser//parser.nit:7382 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:7385 */
+  /* ./parser//parser.nit:7383 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction198____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7385);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7383);
   }
   REGB0 = ATTR_parser___ReduceAction198____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24723,7 +24711,7 @@ void parser___ReduceAction198___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos201]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7388;
+  fra.me.line = 7386;
   fra.me.meth = LOCATE_parser___ReduceAction198___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24731,7 +24719,7 @@ void parser___ReduceAction198___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7388 */
+  /* ./parser//parser.nit:7386 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction198____goto(fra.me.REG[1]) = REGB0;
@@ -24746,7 +24734,7 @@ void parser___ReduceAction199___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7392;
+  fra.me.line = 7390;
   fra.me.meth = LOCATE_parser___ReduceAction199___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -24758,21 +24746,21 @@ void parser___ReduceAction199___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7394 */
+  /* ./parser//parser.nit:7392 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7395 */
+  /* ./parser//parser.nit:7393 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7396 */
+  /* ./parser//parser.nit:7394 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7397 */
+  /* ./parser//parser.nit:7395 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7400 */
+  /* ./parser//parser.nit:7398 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7400);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7398);
   }
-  /* ./parser//parser.nit:7401 */
+  /* ./parser//parser.nit:7399 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -24787,19 +24775,19 @@ void parser___ReduceAction199___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:7402 */
+    /* ./parser//parser.nit:7400 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:7404 */
+  /* ./parser//parser.nit:7402 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:7405 */
+  /* ./parser//parser.nit:7403 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:7406 */
+  /* ./parser//parser.nit:7404 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction199____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7406);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7404);
   }
   REGB0 = ATTR_parser___ReduceAction199____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24815,7 +24803,7 @@ void parser___ReduceAction199___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos202]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7409;
+  fra.me.line = 7407;
   fra.me.meth = LOCATE_parser___ReduceAction199___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24823,7 +24811,7 @@ void parser___ReduceAction199___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7409 */
+  /* ./parser//parser.nit:7407 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction199____goto(fra.me.REG[1]) = REGB0;
@@ -24837,7 +24825,7 @@ void parser___ReduceAction200___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7413;
+  fra.me.line = 7411;
   fra.me.meth = LOCATE_parser___ReduceAction200___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -24848,21 +24836,21 @@ void parser___ReduceAction200___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7415 */
+  /* ./parser//parser.nit:7413 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7416 */
+  /* ./parser//parser.nit:7414 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7417 */
+  /* ./parser//parser.nit:7415 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7418 */
+  /* ./parser//parser.nit:7416 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7420 */
+  /* ./parser//parser.nit:7418 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7421 */
+  /* ./parser//parser.nit:7419 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction200____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7421);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7419);
   }
   REGB0 = ATTR_parser___ReduceAction200____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24878,7 +24866,7 @@ void parser___ReduceAction200___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos203]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7424;
+  fra.me.line = 7422;
   fra.me.meth = LOCATE_parser___ReduceAction200___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24886,7 +24874,7 @@ void parser___ReduceAction200___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7424 */
+  /* ./parser//parser.nit:7422 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction200____goto(fra.me.REG[1]) = REGB0;
@@ -24900,7 +24888,7 @@ void parser___ReduceAction202___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7428;
+  fra.me.line = 7426;
   fra.me.meth = LOCATE_parser___ReduceAction202___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -24911,21 +24899,21 @@ void parser___ReduceAction202___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7430 */
+  /* ./parser//parser.nit:7428 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7431 */
+  /* ./parser//parser.nit:7429 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7432 */
+  /* ./parser//parser.nit:7430 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7433 */
+  /* ./parser//parser.nit:7431 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7435 */
+  /* ./parser//parser.nit:7433 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7436 */
+  /* ./parser//parser.nit:7434 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction202____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7436);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7434);
   }
   REGB0 = ATTR_parser___ReduceAction202____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -24941,7 +24929,7 @@ void parser___ReduceAction202___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos204]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7439;
+  fra.me.line = 7437;
   fra.me.meth = LOCATE_parser___ReduceAction202___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -24949,7 +24937,7 @@ void parser___ReduceAction202___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7439 */
+  /* ./parser//parser.nit:7437 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction202____goto(fra.me.REG[1]) = REGB0;
@@ -24963,7 +24951,7 @@ void parser___ReduceAction203___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7443;
+  fra.me.line = 7441;
   fra.me.meth = LOCATE_parser___ReduceAction203___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -24973,23 +24961,23 @@ void parser___ReduceAction203___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7445 */
+  /* ./parser//parser.nit:7443 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7446 */
+  /* ./parser//parser.nit:7444 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7447 */
+  /* ./parser//parser.nit:7445 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7448 */
+  /* ./parser//parser.nit:7446 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7449 */
+  /* ./parser//parser.nit:7447 */
   fra.me.REG[3] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:7452 */
+  /* ./parser//parser.nit:7450 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7453 */
+  /* ./parser//parser.nit:7451 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction203____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7453);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7451);
   }
   REGB0 = ATTR_parser___ReduceAction203____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25005,7 +24993,7 @@ void parser___ReduceAction203___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos205]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7456;
+  fra.me.line = 7454;
   fra.me.meth = LOCATE_parser___ReduceAction203___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25013,7 +25001,7 @@ void parser___ReduceAction203___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7456 */
+  /* ./parser//parser.nit:7454 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction203____goto(fra.me.REG[1]) = REGB0;
@@ -25027,7 +25015,7 @@ void parser___ReduceAction204___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7460;
+  fra.me.line = 7458;
   fra.me.meth = LOCATE_parser___ReduceAction204___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25037,21 +25025,21 @@ void parser___ReduceAction204___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7462 */
+  /* ./parser//parser.nit:7460 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7463 */
+  /* ./parser//parser.nit:7461 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7464 */
+  /* ./parser//parser.nit:7462 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7465 */
+  /* ./parser//parser.nit:7463 */
   fra.me.REG[3] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:7468 */
+  /* ./parser//parser.nit:7466 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7469 */
+  /* ./parser//parser.nit:7467 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction204____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7469);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7467);
   }
   REGB0 = ATTR_parser___ReduceAction204____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25067,7 +25055,7 @@ void parser___ReduceAction204___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos206]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7472;
+  fra.me.line = 7470;
   fra.me.meth = LOCATE_parser___ReduceAction204___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25075,7 +25063,7 @@ void parser___ReduceAction204___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7472 */
+  /* ./parser//parser.nit:7470 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction204____goto(fra.me.REG[1]) = REGB0;
@@ -25089,7 +25077,7 @@ void parser___ReduceAction205___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7476;
+  fra.me.line = 7474;
   fra.me.meth = LOCATE_parser___ReduceAction205___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25099,17 +25087,17 @@ void parser___ReduceAction205___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7478 */
+  /* ./parser//parser.nit:7476 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7479 */
+  /* ./parser//parser.nit:7477 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7481 */
+  /* ./parser//parser.nit:7479 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7482 */
+  /* ./parser//parser.nit:7480 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction205____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7482);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7480);
   }
   REGB0 = ATTR_parser___ReduceAction205____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25125,7 +25113,7 @@ void parser___ReduceAction205___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos207]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7485;
+  fra.me.line = 7483;
   fra.me.meth = LOCATE_parser___ReduceAction205___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25133,7 +25121,7 @@ void parser___ReduceAction205___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7485 */
+  /* ./parser//parser.nit:7483 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction205____goto(fra.me.REG[1]) = REGB0;
@@ -25148,7 +25136,7 @@ void parser___ReduceAction206___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7489;
+  fra.me.line = 7487;
   fra.me.meth = LOCATE_parser___ReduceAction206___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -25159,19 +25147,19 @@ void parser___ReduceAction206___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7491 */
+  /* ./parser//parser.nit:7489 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7492 */
+  /* ./parser//parser.nit:7490 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7493 */
+  /* ./parser//parser.nit:7491 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7495 */
+  /* ./parser//parser.nit:7493 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7495);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7493);
   }
-  /* ./parser//parser.nit:7496 */
+  /* ./parser//parser.nit:7494 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -25186,18 +25174,18 @@ void parser___ReduceAction206___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:7497 */
+    /* ./parser//parser.nit:7495 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:7499 */
+  /* ./parser//parser.nit:7497 */
   fra.me.REG[4] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4]);
-  /* ./parser//parser.nit:7502 */
+  /* ./parser//parser.nit:7500 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:7503 */
+  /* ./parser//parser.nit:7501 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction206____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7503);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7501);
   }
   REGB0 = ATTR_parser___ReduceAction206____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25213,7 +25201,7 @@ void parser___ReduceAction206___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos208]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7506;
+  fra.me.line = 7504;
   fra.me.meth = LOCATE_parser___ReduceAction206___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25221,7 +25209,7 @@ void parser___ReduceAction206___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7506 */
+  /* ./parser//parser.nit:7504 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction206____goto(fra.me.REG[1]) = REGB0;
@@ -25236,7 +25224,7 @@ void parser___ReduceAction207___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7510;
+  fra.me.line = 7508;
   fra.me.meth = LOCATE_parser___ReduceAction207___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -25248,27 +25236,27 @@ void parser___ReduceAction207___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7512 */
+  /* ./parser//parser.nit:7510 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7513 */
+  /* ./parser//parser.nit:7511 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7514 */
+  /* ./parser//parser.nit:7512 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7515 */
+  /* ./parser//parser.nit:7513 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7517 */
+  /* ./parser//parser.nit:7515 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7517);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7515);
   }
-  /* ./parser//parser.nit:7519 */
+  /* ./parser//parser.nit:7517 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7517);
   }
-  /* ./parser//parser.nit:7520 */
+  /* ./parser//parser.nit:7518 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -25283,21 +25271,21 @@ void parser___ReduceAction207___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:7521 */
+    /* ./parser//parser.nit:7519 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:7523 */
+  /* ./parser//parser.nit:7521 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:7524 */
+  /* ./parser//parser.nit:7522 */
   fra.me.REG[5] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5]);
-  /* ./parser//parser.nit:7527 */
+  /* ./parser//parser.nit:7525 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:7528 */
+  /* ./parser//parser.nit:7526 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction207____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7528);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7526);
   }
   REGB0 = ATTR_parser___ReduceAction207____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25313,7 +25301,7 @@ void parser___ReduceAction207___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos209]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7531;
+  fra.me.line = 7529;
   fra.me.meth = LOCATE_parser___ReduceAction207___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25321,7 +25309,7 @@ void parser___ReduceAction207___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7531 */
+  /* ./parser//parser.nit:7529 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction207____goto(fra.me.REG[1]) = REGB0;
@@ -25336,7 +25324,7 @@ void parser___ReduceAction208___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7535;
+  fra.me.line = 7533;
   fra.me.meth = LOCATE_parser___ReduceAction208___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -25347,21 +25335,21 @@ void parser___ReduceAction208___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7537 */
+  /* ./parser//parser.nit:7535 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7538 */
+  /* ./parser//parser.nit:7536 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7539 */
+  /* ./parser//parser.nit:7537 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7540 */
+  /* ./parser//parser.nit:7538 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7542 */
+  /* ./parser//parser.nit:7540 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7542);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7540);
   }
-  /* ./parser//parser.nit:7543 */
+  /* ./parser//parser.nit:7541 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -25376,18 +25364,18 @@ void parser___ReduceAction208___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:7544 */
+    /* ./parser//parser.nit:7542 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:7546 */
+  /* ./parser//parser.nit:7544 */
   fra.me.REG[4] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[4]);
-  /* ./parser//parser.nit:7549 */
+  /* ./parser//parser.nit:7547 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:7550 */
+  /* ./parser//parser.nit:7548 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction208____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7550);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7548);
   }
   REGB0 = ATTR_parser___ReduceAction208____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25403,7 +25391,7 @@ void parser___ReduceAction208___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos210]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7553;
+  fra.me.line = 7551;
   fra.me.meth = LOCATE_parser___ReduceAction208___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25411,7 +25399,7 @@ void parser___ReduceAction208___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7553 */
+  /* ./parser//parser.nit:7551 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction208____goto(fra.me.REG[1]) = REGB0;
@@ -25426,7 +25414,7 @@ void parser___ReduceAction209___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7557;
+  fra.me.line = 7555;
   fra.me.meth = LOCATE_parser___ReduceAction209___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -25438,29 +25426,29 @@ void parser___ReduceAction209___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7559 */
+  /* ./parser//parser.nit:7557 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7560 */
+  /* ./parser//parser.nit:7558 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7561 */
+  /* ./parser//parser.nit:7559 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7562 */
+  /* ./parser//parser.nit:7560 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7563 */
+  /* ./parser//parser.nit:7561 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7565 */
+  /* ./parser//parser.nit:7563 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7565);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7563);
   }
-  /* ./parser//parser.nit:7567 */
+  /* ./parser//parser.nit:7565 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7567);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7565);
   }
-  /* ./parser//parser.nit:7568 */
+  /* ./parser//parser.nit:7566 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -25475,21 +25463,21 @@ void parser___ReduceAction209___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:7569 */
+    /* ./parser//parser.nit:7567 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:7571 */
+  /* ./parser//parser.nit:7569 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:7572 */
+  /* ./parser//parser.nit:7570 */
   fra.me.REG[5] = NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[5]);
-  /* ./parser//parser.nit:7575 */
+  /* ./parser//parser.nit:7573 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:7576 */
+  /* ./parser//parser.nit:7574 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction209____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7576);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7574);
   }
   REGB0 = ATTR_parser___ReduceAction209____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25505,7 +25493,7 @@ void parser___ReduceAction209___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos211]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7579;
+  fra.me.line = 7577;
   fra.me.meth = LOCATE_parser___ReduceAction209___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25513,7 +25501,7 @@ void parser___ReduceAction209___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7579 */
+  /* ./parser//parser.nit:7577 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction209____goto(fra.me.REG[1]) = REGB0;
@@ -25527,7 +25515,7 @@ void parser___ReduceAction210___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7583;
+  fra.me.line = 7581;
   fra.me.meth = LOCATE_parser___ReduceAction210___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -25538,19 +25526,19 @@ void parser___ReduceAction210___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7585 */
+  /* ./parser//parser.nit:7583 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7586 */
+  /* ./parser//parser.nit:7584 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7587 */
+  /* ./parser//parser.nit:7585 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7589 */
+  /* ./parser//parser.nit:7587 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7590 */
+  /* ./parser//parser.nit:7588 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction210____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7590);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7588);
   }
   REGB0 = ATTR_parser___ReduceAction210____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25566,7 +25554,7 @@ void parser___ReduceAction210___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos212]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7593;
+  fra.me.line = 7591;
   fra.me.meth = LOCATE_parser___ReduceAction210___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25574,7 +25562,7 @@ void parser___ReduceAction210___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7593 */
+  /* ./parser//parser.nit:7591 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction210____goto(fra.me.REG[1]) = REGB0;
@@ -25588,7 +25576,7 @@ void parser___ReduceAction213___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7597;
+  fra.me.line = 7595;
   fra.me.meth = LOCATE_parser___ReduceAction213___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25598,25 +25586,25 @@ void parser___ReduceAction213___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7599 */
+  /* ./parser//parser.nit:7597 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7600 */
+  /* ./parser//parser.nit:7598 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7602 */
+  /* ./parser//parser.nit:7600 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwreturn, ID_TKwreturn)) /*cast nullable TKwreturn*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7602);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7600);
   }
-  /* ./parser//parser.nit:7603 */
+  /* ./parser//parser.nit:7601 */
   fra.me.REG[3] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:7607 */
+  /* ./parser//parser.nit:7605 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7608 */
+  /* ./parser//parser.nit:7606 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction213____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7608);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7606);
   }
   REGB0 = ATTR_parser___ReduceAction213____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25632,7 +25620,7 @@ void parser___ReduceAction213___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos213]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7611;
+  fra.me.line = 7609;
   fra.me.meth = LOCATE_parser___ReduceAction213___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25640,7 +25628,7 @@ void parser___ReduceAction213___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7611 */
+  /* ./parser//parser.nit:7609 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction213____goto(fra.me.REG[1]) = REGB0;
@@ -25654,7 +25642,7 @@ void parser___ReduceAction214___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7615;
+  fra.me.line = 7613;
   fra.me.meth = LOCATE_parser___ReduceAction214___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -25665,33 +25653,33 @@ void parser___ReduceAction214___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7617 */
+  /* ./parser//parser.nit:7615 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7618 */
+  /* ./parser//parser.nit:7616 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7619 */
+  /* ./parser//parser.nit:7617 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7621 */
+  /* ./parser//parser.nit:7619 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwreturn, ID_TKwreturn)) /*cast nullable TKwreturn*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7621);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7619);
   }
-  /* ./parser//parser.nit:7623 */
+  /* ./parser//parser.nit:7621 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7623);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7621);
   }
-  /* ./parser//parser.nit:7624 */
+  /* ./parser//parser.nit:7622 */
   fra.me.REG[3] = NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7628 */
+  /* ./parser//parser.nit:7626 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7629 */
+  /* ./parser//parser.nit:7627 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction214____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7629);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7627);
   }
   REGB0 = ATTR_parser___ReduceAction214____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25707,7 +25695,7 @@ void parser___ReduceAction214___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos214]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7632;
+  fra.me.line = 7630;
   fra.me.meth = LOCATE_parser___ReduceAction214___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25715,7 +25703,7 @@ void parser___ReduceAction214___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7632 */
+  /* ./parser//parser.nit:7630 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction214____goto(fra.me.REG[1]) = REGB0;
@@ -25729,7 +25717,7 @@ void parser___ReduceAction215___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7636;
+  fra.me.line = 7634;
   fra.me.meth = LOCATE_parser___ReduceAction215___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -25739,25 +25727,25 @@ void parser___ReduceAction215___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7638 */
+  /* ./parser//parser.nit:7636 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7639 */
+  /* ./parser//parser.nit:7637 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7641 */
+  /* ./parser//parser.nit:7639 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7641);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7639);
   }
-  /* ./parser//parser.nit:7642 */
+  /* ./parser//parser.nit:7640 */
   fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:7647 */
+  /* ./parser//parser.nit:7645 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7648 */
+  /* ./parser//parser.nit:7646 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction215____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7648);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7646);
   }
   REGB0 = ATTR_parser___ReduceAction215____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25773,7 +25761,7 @@ void parser___ReduceAction215___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos215]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7651;
+  fra.me.line = 7649;
   fra.me.meth = LOCATE_parser___ReduceAction215___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25781,7 +25769,7 @@ void parser___ReduceAction215___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7651 */
+  /* ./parser//parser.nit:7649 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction215____goto(fra.me.REG[1]) = REGB0;
@@ -25795,7 +25783,7 @@ void parser___ReduceAction216___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7655;
+  fra.me.line = 7653;
   fra.me.meth = LOCATE_parser___ReduceAction216___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -25806,33 +25794,33 @@ void parser___ReduceAction216___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7657 */
+  /* ./parser//parser.nit:7655 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7658 */
+  /* ./parser//parser.nit:7656 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7659 */
+  /* ./parser//parser.nit:7657 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7661 */
+  /* ./parser//parser.nit:7659 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7661);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7659);
   }
-  /* ./parser//parser.nit:7663 */
+  /* ./parser//parser.nit:7661 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7663);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7661);
   }
-  /* ./parser//parser.nit:7664 */
+  /* ./parser//parser.nit:7662 */
   fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:7669 */
+  /* ./parser//parser.nit:7667 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7670 */
+  /* ./parser//parser.nit:7668 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction216____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7670);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7668);
   }
   REGB0 = ATTR_parser___ReduceAction216____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25848,7 +25836,7 @@ void parser___ReduceAction216___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos216]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7673;
+  fra.me.line = 7671;
   fra.me.meth = LOCATE_parser___ReduceAction216___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25856,7 +25844,7 @@ void parser___ReduceAction216___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7673 */
+  /* ./parser//parser.nit:7671 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction216____goto(fra.me.REG[1]) = REGB0;
@@ -25870,7 +25858,7 @@ void parser___ReduceAction217___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7677;
+  fra.me.line = 7675;
   fra.me.meth = LOCATE_parser___ReduceAction217___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -25881,33 +25869,33 @@ void parser___ReduceAction217___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7679 */
+  /* ./parser//parser.nit:7677 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7680 */
+  /* ./parser//parser.nit:7678 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7681 */
+  /* ./parser//parser.nit:7679 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7683 */
+  /* ./parser//parser.nit:7681 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7683);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7681);
   }
-  /* ./parser//parser.nit:7685 */
+  /* ./parser//parser.nit:7683 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7685);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7683);
   }
-  /* ./parser//parser.nit:7686 */
+  /* ./parser//parser.nit:7684 */
   fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:7691 */
+  /* ./parser//parser.nit:7689 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7692 */
+  /* ./parser//parser.nit:7690 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction217____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7692);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7690);
   }
   REGB0 = ATTR_parser___ReduceAction217____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -25923,7 +25911,7 @@ void parser___ReduceAction217___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos217]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7695;
+  fra.me.line = 7693;
   fra.me.meth = LOCATE_parser___ReduceAction217___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -25931,7 +25919,7 @@ void parser___ReduceAction217___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7695 */
+  /* ./parser//parser.nit:7693 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction217____goto(fra.me.REG[1]) = REGB0;
@@ -25945,7 +25933,7 @@ void parser___ReduceAction218___action(val_t p0, val_t p1){
   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.line = 7697;
   fra.me.meth = LOCATE_parser___ReduceAction218___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -25957,41 +25945,41 @@ void parser___ReduceAction218___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7701 */
+  /* ./parser//parser.nit:7699 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7702 */
+  /* ./parser//parser.nit:7700 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7703 */
+  /* ./parser//parser.nit:7701 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7704 */
+  /* ./parser//parser.nit:7702 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7706 */
+  /* ./parser//parser.nit:7704 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7706);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7704);
   }
-  /* ./parser//parser.nit:7708 */
+  /* ./parser//parser.nit:7706 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7708);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7706);
   }
-  /* ./parser//parser.nit:7710 */
+  /* ./parser//parser.nit:7708 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7710);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7708);
   }
-  /* ./parser//parser.nit:7711 */
+  /* ./parser//parser.nit:7709 */
   fra.me.REG[3] = NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7716 */
+  /* ./parser//parser.nit:7714 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7717 */
+  /* ./parser//parser.nit:7715 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction218____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7717);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7715);
   }
   REGB0 = ATTR_parser___ReduceAction218____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26007,7 +25995,7 @@ void parser___ReduceAction218___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos218]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7720;
+  fra.me.line = 7718;
   fra.me.meth = LOCATE_parser___ReduceAction218___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26015,7 +26003,7 @@ void parser___ReduceAction218___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7720 */
+  /* ./parser//parser.nit:7718 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction218____goto(fra.me.REG[1]) = REGB0;
@@ -26029,7 +26017,7 @@ void parser___ReduceAction219___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7724;
+  fra.me.line = 7722;
   fra.me.meth = LOCATE_parser___ReduceAction219___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26039,25 +26027,25 @@ void parser___ReduceAction219___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7726 */
+  /* ./parser//parser.nit:7724 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7727 */
+  /* ./parser//parser.nit:7725 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7729 */
+  /* ./parser//parser.nit:7727 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwabort, ID_TKwabort)) /*cast nullable TKwabort*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7729);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7727);
   }
-  /* ./parser//parser.nit:7730 */
+  /* ./parser//parser.nit:7728 */
   fra.me.REG[3] = NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:7733 */
+  /* ./parser//parser.nit:7731 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7734 */
+  /* ./parser//parser.nit:7732 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction219____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7734);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7732);
   }
   REGB0 = ATTR_parser___ReduceAction219____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26073,7 +26061,7 @@ void parser___ReduceAction219___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos219]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7737;
+  fra.me.line = 7735;
   fra.me.meth = LOCATE_parser___ReduceAction219___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26081,7 +26069,7 @@ void parser___ReduceAction219___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7737 */
+  /* ./parser//parser.nit:7735 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction219____goto(fra.me.REG[1]) = REGB0;
@@ -26095,7 +26083,7 @@ void parser___ReduceAction220___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7741;
+  fra.me.line = 7739;
   fra.me.meth = LOCATE_parser___ReduceAction220___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -26105,25 +26093,25 @@ void parser___ReduceAction220___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7743 */
+  /* ./parser//parser.nit:7741 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7744 */
+  /* ./parser//parser.nit:7742 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7746 */
+  /* ./parser//parser.nit:7744 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7746);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7744);
   }
-  /* ./parser//parser.nit:7747 */
+  /* ./parser//parser.nit:7745 */
   fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:7752 */
+  /* ./parser//parser.nit:7750 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7753 */
+  /* ./parser//parser.nit:7751 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction220____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7753);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7751);
   }
   REGB0 = ATTR_parser___ReduceAction220____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26139,7 +26127,7 @@ void parser___ReduceAction220___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos220]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7756;
+  fra.me.line = 7754;
   fra.me.meth = LOCATE_parser___ReduceAction220___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26147,7 +26135,7 @@ void parser___ReduceAction220___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7756 */
+  /* ./parser//parser.nit:7754 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction220____goto(fra.me.REG[1]) = REGB0;
@@ -26161,7 +26149,7 @@ void parser___ReduceAction221___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7760;
+  fra.me.line = 7758;
   fra.me.meth = LOCATE_parser___ReduceAction221___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -26172,33 +26160,33 @@ void parser___ReduceAction221___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7762 */
+  /* ./parser//parser.nit:7760 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7763 */
+  /* ./parser//parser.nit:7761 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7764 */
+  /* ./parser//parser.nit:7762 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7766 */
+  /* ./parser//parser.nit:7764 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7766);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7764);
   }
-  /* ./parser//parser.nit:7768 */
+  /* ./parser//parser.nit:7766 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7768);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7766);
   }
-  /* ./parser//parser.nit:7769 */
+  /* ./parser//parser.nit:7767 */
   fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:7774 */
+  /* ./parser//parser.nit:7772 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7775 */
+  /* ./parser//parser.nit:7773 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction221____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7775);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7773);
   }
   REGB0 = ATTR_parser___ReduceAction221____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26214,7 +26202,7 @@ void parser___ReduceAction221___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos221]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7778;
+  fra.me.line = 7776;
   fra.me.meth = LOCATE_parser___ReduceAction221___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26222,7 +26210,7 @@ void parser___ReduceAction221___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7778 */
+  /* ./parser//parser.nit:7776 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction221____goto(fra.me.REG[1]) = REGB0;
@@ -26236,7 +26224,7 @@ void parser___ReduceAction222___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7782;
+  fra.me.line = 7780;
   fra.me.meth = LOCATE_parser___ReduceAction222___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -26247,33 +26235,33 @@ void parser___ReduceAction222___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7784 */
+  /* ./parser//parser.nit:7782 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7785 */
+  /* ./parser//parser.nit:7783 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7786 */
+  /* ./parser//parser.nit:7784 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7788 */
+  /* ./parser//parser.nit:7786 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7788);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7786);
   }
-  /* ./parser//parser.nit:7790 */
+  /* ./parser//parser.nit:7788 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7790);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7788);
   }
-  /* ./parser//parser.nit:7791 */
+  /* ./parser//parser.nit:7789 */
   fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:7796 */
+  /* ./parser//parser.nit:7794 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7797 */
+  /* ./parser//parser.nit:7795 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction222____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7797);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7795);
   }
   REGB0 = ATTR_parser___ReduceAction222____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26289,7 +26277,7 @@ void parser___ReduceAction222___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos222]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7800;
+  fra.me.line = 7798;
   fra.me.meth = LOCATE_parser___ReduceAction222___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26297,7 +26285,7 @@ void parser___ReduceAction222___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7800 */
+  /* ./parser//parser.nit:7798 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction222____goto(fra.me.REG[1]) = REGB0;
@@ -26311,7 +26299,7 @@ void parser___ReduceAction223___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7804;
+  fra.me.line = 7802;
   fra.me.meth = LOCATE_parser___ReduceAction223___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -26323,41 +26311,41 @@ void parser___ReduceAction223___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7806 */
+  /* ./parser//parser.nit:7804 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7807 */
+  /* ./parser//parser.nit:7805 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7808 */
+  /* ./parser//parser.nit:7806 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7809 */
+  /* ./parser//parser.nit:7807 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7811 */
+  /* ./parser//parser.nit:7809 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwcontinue, ID_TKwcontinue)) /*cast nullable TKwcontinue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7811);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7809);
   }
-  /* ./parser//parser.nit:7813 */
+  /* ./parser//parser.nit:7811 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7813);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7811);
   }
-  /* ./parser//parser.nit:7815 */
+  /* ./parser//parser.nit:7813 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7815);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7813);
   }
-  /* ./parser//parser.nit:7816 */
+  /* ./parser//parser.nit:7814 */
   fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:7821 */
+  /* ./parser//parser.nit:7819 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:7822 */
+  /* ./parser//parser.nit:7820 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction223____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7822);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7820);
   }
   REGB0 = ATTR_parser___ReduceAction223____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26373,7 +26361,7 @@ void parser___ReduceAction223___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos223]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7825;
+  fra.me.line = 7823;
   fra.me.meth = LOCATE_parser___ReduceAction223___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26381,7 +26369,7 @@ void parser___ReduceAction223___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7825 */
+  /* ./parser//parser.nit:7823 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction223____goto(fra.me.REG[1]) = REGB0;
@@ -26395,7 +26383,7 @@ void parser___ReduceAction230___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7829;
+  fra.me.line = 7827;
   fra.me.meth = LOCATE_parser___ReduceAction230___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -26409,52 +26397,52 @@ void parser___ReduceAction230___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7831 */
+  /* ./parser//parser.nit:7829 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7832 */
+  /* ./parser//parser.nit:7830 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7833 */
+  /* ./parser//parser.nit:7831 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7834 */
+  /* ./parser//parser.nit:7832 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7835 */
+  /* ./parser//parser.nit:7833 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7836 */
+  /* ./parser//parser.nit:7834 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7837 */
+  /* ./parser//parser.nit:7835 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7838 */
+  /* ./parser//parser.nit:7836 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7840 */
+  /* ./parser//parser.nit:7838 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7840);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7838);
   }
-  /* ./parser//parser.nit:7842 */
+  /* ./parser//parser.nit:7840 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7842);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7840);
   }
-  /* ./parser//parser.nit:7844 */
+  /* ./parser//parser.nit:7842 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7844);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7842);
   }
-  /* ./parser//parser.nit:7845 */
+  /* ./parser//parser.nit:7843 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:7846 */
+  /* ./parser//parser.nit:7844 */
   fra.me.REG[7] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:7852 */
+  /* ./parser//parser.nit:7850 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:7853 */
+  /* ./parser//parser.nit:7851 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction230____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7853);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7851);
   }
   REGB0 = ATTR_parser___ReduceAction230____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26470,7 +26458,7 @@ void parser___ReduceAction230___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos224]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7856;
+  fra.me.line = 7854;
   fra.me.meth = LOCATE_parser___ReduceAction230___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26478,7 +26466,7 @@ void parser___ReduceAction230___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7856 */
+  /* ./parser//parser.nit:7854 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction230____goto(fra.me.REG[1]) = REGB0;
@@ -26492,7 +26480,7 @@ void parser___ReduceAction231___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7860;
+  fra.me.line = 7858;
   fra.me.meth = LOCATE_parser___ReduceAction231___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -26506,42 +26494,42 @@ void parser___ReduceAction231___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7862 */
+  /* ./parser//parser.nit:7860 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7863 */
+  /* ./parser//parser.nit:7861 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7864 */
+  /* ./parser//parser.nit:7862 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7865 */
+  /* ./parser//parser.nit:7863 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7866 */
+  /* ./parser//parser.nit:7864 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7867 */
+  /* ./parser//parser.nit:7865 */
   fra.me.REG[7] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:7870 */
+  /* ./parser//parser.nit:7868 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7870);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7868);
   }
-  /* ./parser//parser.nit:7872 */
+  /* ./parser//parser.nit:7870 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7872);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7870);
   }
-  /* ./parser//parser.nit:7873 */
+  /* ./parser//parser.nit:7871 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:7874 */
+  /* ./parser//parser.nit:7872 */
   fra.me.REG[6] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[7], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:7880 */
+  /* ./parser//parser.nit:7878 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:7881 */
+  /* ./parser//parser.nit:7879 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction231____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7881);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7879);
   }
   REGB0 = ATTR_parser___ReduceAction231____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26557,7 +26545,7 @@ void parser___ReduceAction231___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos225]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7884;
+  fra.me.line = 7882;
   fra.me.meth = LOCATE_parser___ReduceAction231___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26565,7 +26553,7 @@ void parser___ReduceAction231___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7884 */
+  /* ./parser//parser.nit:7882 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction231____goto(fra.me.REG[1]) = REGB0;
@@ -26579,7 +26567,7 @@ void parser___ReduceAction232___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7888;
+  fra.me.line = 7886;
   fra.me.meth = LOCATE_parser___ReduceAction232___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -26594,63 +26582,63 @@ void parser___ReduceAction232___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7890 */
+  /* ./parser//parser.nit:7888 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7891 */
+  /* ./parser//parser.nit:7889 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7892 */
+  /* ./parser//parser.nit:7890 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7893 */
+  /* ./parser//parser.nit:7891 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7894 */
+  /* ./parser//parser.nit:7892 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7895 */
+  /* ./parser//parser.nit:7893 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7896 */
+  /* ./parser//parser.nit:7894 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7897 */
+  /* ./parser//parser.nit:7895 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7898 */
+  /* ./parser//parser.nit:7896 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7900 */
+  /* ./parser//parser.nit:7898 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7900);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7898);
   }
-  /* ./parser//parser.nit:7902 */
+  /* ./parser//parser.nit:7900 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7902);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7900);
   }
-  /* ./parser//parser.nit:7904 */
+  /* ./parser//parser.nit:7902 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7904);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7902);
   }
-  /* ./parser//parser.nit:7905 */
+  /* ./parser//parser.nit:7903 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:7907 */
+  /* ./parser//parser.nit:7905 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7907);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7905);
   }
-  /* ./parser//parser.nit:7908 */
+  /* ./parser//parser.nit:7906 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[3]);
   fra.me.REG[8] = fra.me.REG[3];
-  /* ./parser//parser.nit:7909 */
+  /* ./parser//parser.nit:7907 */
   fra.me.REG[8] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[8]);
-  /* ./parser//parser.nit:7915 */
+  /* ./parser//parser.nit:7913 */
   fra.me.REG[2] = fra.me.REG[8];
-  /* ./parser//parser.nit:7916 */
+  /* ./parser//parser.nit:7914 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction232____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7916);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7914);
   }
   REGB0 = ATTR_parser___ReduceAction232____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26666,7 +26654,7 @@ void parser___ReduceAction232___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos226]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7919;
+  fra.me.line = 7917;
   fra.me.meth = LOCATE_parser___ReduceAction232___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26674,7 +26662,7 @@ void parser___ReduceAction232___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7919 */
+  /* ./parser//parser.nit:7917 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction232____goto(fra.me.REG[1]) = REGB0;
@@ -26688,7 +26676,7 @@ void parser___ReduceAction233___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7923;
+  fra.me.line = 7921;
   fra.me.meth = LOCATE_parser___ReduceAction233___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -26703,53 +26691,53 @@ void parser___ReduceAction233___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7925 */
+  /* ./parser//parser.nit:7923 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7926 */
+  /* ./parser//parser.nit:7924 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7927 */
+  /* ./parser//parser.nit:7925 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7928 */
+  /* ./parser//parser.nit:7926 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7929 */
+  /* ./parser//parser.nit:7927 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7930 */
+  /* ./parser//parser.nit:7928 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7931 */
+  /* ./parser//parser.nit:7929 */
   fra.me.REG[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:7934 */
+  /* ./parser//parser.nit:7932 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7934);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7932);
   }
-  /* ./parser//parser.nit:7936 */
+  /* ./parser//parser.nit:7934 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7936);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7934);
   }
-  /* ./parser//parser.nit:7937 */
+  /* ./parser//parser.nit:7935 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:7939 */
+  /* ./parser//parser.nit:7937 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7939);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7937);
   }
-  /* ./parser//parser.nit:7940 */
+  /* ./parser//parser.nit:7938 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:7941 */
+  /* ./parser//parser.nit:7939 */
   fra.me.REG[7] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[8], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:7947 */
+  /* ./parser//parser.nit:7945 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:7948 */
+  /* ./parser//parser.nit:7946 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction233____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7948);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7946);
   }
   REGB0 = ATTR_parser___ReduceAction233____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26765,7 +26753,7 @@ void parser___ReduceAction233___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos227]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7951;
+  fra.me.line = 7949;
   fra.me.meth = LOCATE_parser___ReduceAction233___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26773,7 +26761,7 @@ void parser___ReduceAction233___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7951 */
+  /* ./parser//parser.nit:7949 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction233____goto(fra.me.REG[1]) = REGB0;
@@ -26787,7 +26775,7 @@ void parser___ReduceAction234___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7955;
+  fra.me.line = 7953;
   fra.me.meth = LOCATE_parser___ReduceAction234___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -26799,38 +26787,38 @@ void parser___ReduceAction234___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7957 */
+  /* ./parser//parser.nit:7955 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7958 */
+  /* ./parser//parser.nit:7956 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7959 */
+  /* ./parser//parser.nit:7957 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7960 */
+  /* ./parser//parser.nit:7958 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7962 */
+  /* ./parser//parser.nit:7960 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwsuper, ID_TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7962);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7960);
   }
-  /* ./parser//parser.nit:7964 */
+  /* ./parser//parser.nit:7962 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7964);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7962);
   }
-  /* ./parser//parser.nit:7965 */
+  /* ./parser//parser.nit:7963 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:7966 */
+  /* ./parser//parser.nit:7964 */
   fra.me.REG[5] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(NIT_NULL, fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:7971 */
+  /* ./parser//parser.nit:7969 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:7972 */
+  /* ./parser//parser.nit:7970 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction234____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7972);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7970);
   }
   REGB0 = ATTR_parser___ReduceAction234____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26846,7 +26834,7 @@ void parser___ReduceAction234___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos228]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7975;
+  fra.me.line = 7973;
   fra.me.meth = LOCATE_parser___ReduceAction234___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26854,7 +26842,7 @@ void parser___ReduceAction234___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:7975 */
+  /* ./parser//parser.nit:7973 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction234____goto(fra.me.REG[1]) = REGB0;
@@ -26868,7 +26856,7 @@ void parser___ReduceAction235___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 7979;
+  fra.me.line = 7977;
   fra.me.meth = LOCATE_parser___ReduceAction235___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -26881,46 +26869,46 @@ void parser___ReduceAction235___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:7981 */
+  /* ./parser//parser.nit:7979 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:7982 */
+  /* ./parser//parser.nit:7980 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7983 */
+  /* ./parser//parser.nit:7981 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7984 */
+  /* ./parser//parser.nit:7982 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:7985 */
+  /* ./parser//parser.nit:7983 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:7987 */
+  /* ./parser//parser.nit:7985 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AQualified, ID_AQualified)) /*cast nullable AQualified*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7987);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7985);
   }
-  /* ./parser//parser.nit:7989 */
+  /* ./parser//parser.nit:7987 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwsuper, ID_TKwsuper)) /*cast nullable TKwsuper*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7989);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7987);
   }
-  /* ./parser//parser.nit:7991 */
+  /* ./parser//parser.nit:7989 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 7991);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 7989);
   }
-  /* ./parser//parser.nit:7992 */
+  /* ./parser//parser.nit:7990 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:7993 */
+  /* ./parser//parser.nit:7991 */
   fra.me.REG[6] = NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* ./parser//parser.nit:7998 */
+  /* ./parser//parser.nit:7996 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:7999 */
+  /* ./parser//parser.nit:7997 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction235____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7999);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 7997);
   }
   REGB0 = ATTR_parser___ReduceAction235____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -26936,7 +26924,7 @@ void parser___ReduceAction235___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos229]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8002;
+  fra.me.line = 8000;
   fra.me.meth = LOCATE_parser___ReduceAction235___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -26944,7 +26932,7 @@ void parser___ReduceAction235___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8002 */
+  /* ./parser//parser.nit:8000 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction235____goto(fra.me.REG[1]) = REGB0;
@@ -26958,7 +26946,7 @@ void parser___ReduceAction236___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8006;
+  fra.me.line = 8004;
   fra.me.meth = LOCATE_parser___ReduceAction236___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -26971,50 +26959,50 @@ void parser___ReduceAction236___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8008 */
+  /* ./parser//parser.nit:8006 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8009 */
+  /* ./parser//parser.nit:8007 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8010 */
+  /* ./parser//parser.nit:8008 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8011 */
+  /* ./parser//parser.nit:8009 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8012 */
+  /* ./parser//parser.nit:8010 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8013 */
+  /* ./parser//parser.nit:8011 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8014 */
+  /* ./parser//parser.nit:8012 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8016 */
+  /* ./parser//parser.nit:8014 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8016);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8014);
   }
-  /* ./parser//parser.nit:8018 */
+  /* ./parser//parser.nit:8016 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8018);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8016);
   }
-  /* ./parser//parser.nit:8020 */
+  /* ./parser//parser.nit:8018 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8020);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8018);
   }
-  /* ./parser//parser.nit:8021 */
+  /* ./parser//parser.nit:8019 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:8022 */
+  /* ./parser//parser.nit:8020 */
   fra.me.REG[6] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* ./parser//parser.nit:8027 */
+  /* ./parser//parser.nit:8025 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:8028 */
+  /* ./parser//parser.nit:8026 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction236____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8028);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8026);
   }
   REGB0 = ATTR_parser___ReduceAction236____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27030,7 +27018,7 @@ void parser___ReduceAction236___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos230]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8031;
+  fra.me.line = 8029;
   fra.me.meth = LOCATE_parser___ReduceAction236___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27038,7 +27026,7 @@ void parser___ReduceAction236___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8031 */
+  /* ./parser//parser.nit:8029 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction236____goto(fra.me.REG[1]) = REGB0;
@@ -27052,7 +27040,7 @@ void parser___ReduceAction237___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8035;
+  fra.me.line = 8033;
   fra.me.meth = LOCATE_parser___ReduceAction237___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -27065,40 +27053,40 @@ void parser___ReduceAction237___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8037 */
+  /* ./parser//parser.nit:8035 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8038 */
+  /* ./parser//parser.nit:8036 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8039 */
+  /* ./parser//parser.nit:8037 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8040 */
+  /* ./parser//parser.nit:8038 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8041 */
+  /* ./parser//parser.nit:8039 */
   fra.me.REG[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:8044 */
+  /* ./parser//parser.nit:8042 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8044);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8042);
   }
-  /* ./parser//parser.nit:8046 */
+  /* ./parser//parser.nit:8044 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8046);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8044);
   }
-  /* ./parser//parser.nit:8047 */
+  /* ./parser//parser.nit:8045 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:8048 */
+  /* ./parser//parser.nit:8046 */
   fra.me.REG[5] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[6], fra.me.REG[4], fra.me.REG[5]);
-  /* ./parser//parser.nit:8053 */
+  /* ./parser//parser.nit:8051 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:8054 */
+  /* ./parser//parser.nit:8052 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction237____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8054);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8052);
   }
   REGB0 = ATTR_parser___ReduceAction237____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27114,7 +27102,7 @@ void parser___ReduceAction237___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos231]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8057;
+  fra.me.line = 8055;
   fra.me.meth = LOCATE_parser___ReduceAction237___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27122,7 +27110,7 @@ void parser___ReduceAction237___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8057 */
+  /* ./parser//parser.nit:8055 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction237____goto(fra.me.REG[1]) = REGB0;
@@ -27136,7 +27124,7 @@ void parser___ReduceAction238___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8061;
+  fra.me.line = 8059;
   fra.me.meth = LOCATE_parser___ReduceAction238___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -27147,33 +27135,33 @@ void parser___ReduceAction238___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8063 */
+  /* ./parser//parser.nit:8061 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8064 */
+  /* ./parser//parser.nit:8062 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8065 */
+  /* ./parser//parser.nit:8063 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8067 */
+  /* ./parser//parser.nit:8065 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwlabel, ID_TKwlabel)) /*cast nullable TKwlabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8067);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8065);
   }
-  /* ./parser//parser.nit:8069 */
+  /* ./parser//parser.nit:8067 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8069);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8067);
   }
-  /* ./parser//parser.nit:8070 */
+  /* ./parser//parser.nit:8068 */
   fra.me.REG[3] = NEW_ALabel_parser_prod___ALabel___init_alabel(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8074 */
+  /* ./parser//parser.nit:8072 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8075 */
+  /* ./parser//parser.nit:8073 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction238____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8075);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8073);
   }
   REGB0 = ATTR_parser___ReduceAction238____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27189,7 +27177,7 @@ void parser___ReduceAction238___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos232]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8078;
+  fra.me.line = 8076;
   fra.me.meth = LOCATE_parser___ReduceAction238___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27197,7 +27185,7 @@ void parser___ReduceAction238___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8078 */
+  /* ./parser//parser.nit:8076 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction238____goto(fra.me.REG[1]) = REGB0;
@@ -27212,7 +27200,7 @@ void parser___ReduceAction239___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8082;
+  fra.me.line = 8080;
   fra.me.meth = LOCATE_parser___ReduceAction239___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -27223,13 +27211,13 @@ void parser___ReduceAction239___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8084 */
+  /* ./parser//parser.nit:8082 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8085 */
+  /* ./parser//parser.nit:8083 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8086 */
+  /* ./parser//parser.nit:8084 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8088 */
+  /* ./parser//parser.nit:8086 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -27244,16 +27232,16 @@ void parser___ReduceAction239___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:8089 */
+    /* ./parser//parser.nit:8087 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:8091 */
+  /* ./parser//parser.nit:8089 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:8092 */
+  /* ./parser//parser.nit:8090 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction239____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8092);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8090);
   }
   REGB0 = ATTR_parser___ReduceAction239____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27269,7 +27257,7 @@ void parser___ReduceAction239___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos233]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8095;
+  fra.me.line = 8093;
   fra.me.meth = LOCATE_parser___ReduceAction239___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27277,7 +27265,7 @@ void parser___ReduceAction239___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8095 */
+  /* ./parser//parser.nit:8093 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction239____goto(fra.me.REG[1]) = REGB0;
@@ -27292,7 +27280,7 @@ void parser___ReduceAction240___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8099;
+  fra.me.line = 8097;
   fra.me.meth = LOCATE_parser___ReduceAction240___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -27304,21 +27292,21 @@ void parser___ReduceAction240___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8101 */
+  /* ./parser//parser.nit:8099 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8102 */
+  /* ./parser//parser.nit:8100 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8103 */
+  /* ./parser//parser.nit:8101 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8104 */
+  /* ./parser//parser.nit:8102 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8107 */
+  /* ./parser//parser.nit:8105 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8107);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8105);
   }
-  /* ./parser//parser.nit:8108 */
+  /* ./parser//parser.nit:8106 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -27333,19 +27321,19 @@ void parser___ReduceAction240___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:8109 */
+    /* ./parser//parser.nit:8107 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:8111 */
+  /* ./parser//parser.nit:8109 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:8112 */
+  /* ./parser//parser.nit:8110 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:8113 */
+  /* ./parser//parser.nit:8111 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction240____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8113);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8111);
   }
   REGB0 = ATTR_parser___ReduceAction240____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27361,7 +27349,7 @@ void parser___ReduceAction240___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos234]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8116;
+  fra.me.line = 8114;
   fra.me.meth = LOCATE_parser___ReduceAction240___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27369,7 +27357,7 @@ void parser___ReduceAction240___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8116 */
+  /* ./parser//parser.nit:8114 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction240____goto(fra.me.REG[1]) = REGB0;
@@ -27383,7 +27371,7 @@ void parser___ReduceAction241___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8120;
+  fra.me.line = 8118;
   fra.me.meth = LOCATE_parser___ReduceAction241___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -27398,59 +27386,59 @@ void parser___ReduceAction241___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8122 */
+  /* ./parser//parser.nit:8120 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8123 */
+  /* ./parser//parser.nit:8121 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8124 */
+  /* ./parser//parser.nit:8122 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8125 */
+  /* ./parser//parser.nit:8123 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8126 */
+  /* ./parser//parser.nit:8124 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8127 */
+  /* ./parser//parser.nit:8125 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8128 */
+  /* ./parser//parser.nit:8126 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8130 */
+  /* ./parser//parser.nit:8128 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8130);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8128);
   }
-  /* ./parser//parser.nit:8132 */
+  /* ./parser//parser.nit:8130 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8132);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8130);
   }
-  /* ./parser//parser.nit:8134 */
+  /* ./parser//parser.nit:8132 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8134);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8132);
   }
-  /* ./parser//parser.nit:8136 */
+  /* ./parser//parser.nit:8134 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8136);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8134);
   }
-  /* ./parser//parser.nit:8138 */
+  /* ./parser//parser.nit:8136 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8138);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8136);
   }
-  /* ./parser//parser.nit:8139 */
+  /* ./parser//parser.nit:8137 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8147 */
+  /* ./parser//parser.nit:8145 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8148 */
+  /* ./parser//parser.nit:8146 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction241____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8148);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8146);
   }
   REGB0 = ATTR_parser___ReduceAction241____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27466,7 +27454,7 @@ void parser___ReduceAction241___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos235]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8151;
+  fra.me.line = 8149;
   fra.me.meth = LOCATE_parser___ReduceAction241___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27474,7 +27462,7 @@ void parser___ReduceAction241___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8151 */
+  /* ./parser//parser.nit:8149 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction241____goto(fra.me.REG[1]) = REGB0;
@@ -27488,7 +27476,7 @@ void parser___ReduceAction242___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8155;
+  fra.me.line = 8153;
   fra.me.meth = LOCATE_parser___ReduceAction242___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -27504,70 +27492,70 @@ void parser___ReduceAction242___action(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8157 */
+  /* ./parser//parser.nit:8155 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8158 */
+  /* ./parser//parser.nit:8156 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8159 */
+  /* ./parser//parser.nit:8157 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8160 */
+  /* ./parser//parser.nit:8158 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8161 */
+  /* ./parser//parser.nit:8159 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8162 */
+  /* ./parser//parser.nit:8160 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8163 */
+  /* ./parser//parser.nit:8161 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8164 */
+  /* ./parser//parser.nit:8162 */
   fra.me.REG[9] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8166 */
+  /* ./parser//parser.nit:8164 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8166);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8164);
   }
-  /* ./parser//parser.nit:8168 */
+  /* ./parser//parser.nit:8166 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8168);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8166);
   }
-  /* ./parser//parser.nit:8170 */
+  /* ./parser//parser.nit:8168 */
   REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8170);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8168);
   }
-  /* ./parser//parser.nit:8171 */
+  /* ./parser//parser.nit:8169 */
   fra.me.REG[6] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[6]);
   fra.me.REG[9] = fra.me.REG[6];
-  /* ./parser//parser.nit:8173 */
+  /* ./parser//parser.nit:8171 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8173);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8171);
   }
-  /* ./parser//parser.nit:8175 */
+  /* ./parser//parser.nit:8173 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8175);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8173);
   }
-  /* ./parser//parser.nit:8177 */
+  /* ./parser//parser.nit:8175 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8177);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8175);
   }
-  /* ./parser//parser.nit:8178 */
+  /* ./parser//parser.nit:8176 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[8], fra.me.REG[7], fra.me.REG[9], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8186 */
+  /* ./parser//parser.nit:8184 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8187 */
+  /* ./parser//parser.nit:8185 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction242____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8187);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8185);
   }
   REGB0 = ATTR_parser___ReduceAction242____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27583,7 +27571,7 @@ void parser___ReduceAction242___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos236]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8190;
+  fra.me.line = 8188;
   fra.me.meth = LOCATE_parser___ReduceAction242___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27591,7 +27579,7 @@ void parser___ReduceAction242___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8190 */
+  /* ./parser//parser.nit:8188 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction242____goto(fra.me.REG[1]) = REGB0;
@@ -27605,7 +27593,7 @@ void parser___ReduceAction243___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8194;
+  fra.me.line = 8192;
   fra.me.meth = LOCATE_parser___ReduceAction243___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -27619,51 +27607,51 @@ void parser___ReduceAction243___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8196 */
+  /* ./parser//parser.nit:8194 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8197 */
+  /* ./parser//parser.nit:8195 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8198 */
+  /* ./parser//parser.nit:8196 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8199 */
+  /* ./parser//parser.nit:8197 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8200 */
+  /* ./parser//parser.nit:8198 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8201 */
+  /* ./parser//parser.nit:8199 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8203 */
+  /* ./parser//parser.nit:8201 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8203);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8201);
   }
-  /* ./parser//parser.nit:8205 */
+  /* ./parser//parser.nit:8203 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8205);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8203);
   }
-  /* ./parser//parser.nit:8207 */
+  /* ./parser//parser.nit:8205 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8207);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8205);
   }
-  /* ./parser//parser.nit:8209 */
+  /* ./parser//parser.nit:8207 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8209);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8207);
   }
-  /* ./parser//parser.nit:8210 */
+  /* ./parser//parser.nit:8208 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:8218 */
+  /* ./parser//parser.nit:8216 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8219 */
+  /* ./parser//parser.nit:8217 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction243____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8219);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8217);
   }
   REGB0 = ATTR_parser___ReduceAction243____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27679,7 +27667,7 @@ void parser___ReduceAction243___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos237]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8222;
+  fra.me.line = 8220;
   fra.me.meth = LOCATE_parser___ReduceAction243___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27687,7 +27675,7 @@ void parser___ReduceAction243___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8222 */
+  /* ./parser//parser.nit:8220 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction243____goto(fra.me.REG[1]) = REGB0;
@@ -27701,7 +27689,7 @@ void parser___ReduceAction244___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8226;
+  fra.me.line = 8224;
   fra.me.meth = LOCATE_parser___ReduceAction244___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -27716,62 +27704,62 @@ void parser___ReduceAction244___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8228 */
+  /* ./parser//parser.nit:8226 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8229 */
+  /* ./parser//parser.nit:8227 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8230 */
+  /* ./parser//parser.nit:8228 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8231 */
+  /* ./parser//parser.nit:8229 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8232 */
+  /* ./parser//parser.nit:8230 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8233 */
+  /* ./parser//parser.nit:8231 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8234 */
+  /* ./parser//parser.nit:8232 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8236 */
+  /* ./parser//parser.nit:8234 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8236);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8234);
   }
-  /* ./parser//parser.nit:8238 */
+  /* ./parser//parser.nit:8236 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8238);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8236);
   }
-  /* ./parser//parser.nit:8240 */
+  /* ./parser//parser.nit:8238 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8240);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8238);
   }
-  /* ./parser//parser.nit:8241 */
+  /* ./parser//parser.nit:8239 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* ./parser//parser.nit:8243 */
+  /* ./parser//parser.nit:8241 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8243);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8241);
   }
-  /* ./parser//parser.nit:8245 */
+  /* ./parser//parser.nit:8243 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8245);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8243);
   }
-  /* ./parser//parser.nit:8246 */
+  /* ./parser//parser.nit:8244 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:8254 */
+  /* ./parser//parser.nit:8252 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8255 */
+  /* ./parser//parser.nit:8253 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction244____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8255);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8253);
   }
   REGB0 = ATTR_parser___ReduceAction244____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27787,7 +27775,7 @@ void parser___ReduceAction244___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos238]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8258;
+  fra.me.line = 8256;
   fra.me.meth = LOCATE_parser___ReduceAction244___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27795,7 +27783,7 @@ void parser___ReduceAction244___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8258 */
+  /* ./parser//parser.nit:8256 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction244____goto(fra.me.REG[1]) = REGB0;
@@ -27809,7 +27797,7 @@ void parser___ReduceAction245___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8262;
+  fra.me.line = 8260;
   fra.me.meth = LOCATE_parser___ReduceAction245___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -27822,47 +27810,47 @@ void parser___ReduceAction245___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8264 */
+  /* ./parser//parser.nit:8262 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8265 */
+  /* ./parser//parser.nit:8263 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8266 */
+  /* ./parser//parser.nit:8264 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8267 */
+  /* ./parser//parser.nit:8265 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8268 */
+  /* ./parser//parser.nit:8266 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8269 */
+  /* ./parser//parser.nit:8267 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8270 */
+  /* ./parser//parser.nit:8268 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8272 */
+  /* ./parser//parser.nit:8270 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8272);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8270);
   }
-  /* ./parser//parser.nit:8274 */
+  /* ./parser//parser.nit:8272 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8274);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8272);
   }
-  /* ./parser//parser.nit:8276 */
+  /* ./parser//parser.nit:8274 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8276);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8274);
   }
-  /* ./parser//parser.nit:8277 */
+  /* ./parser//parser.nit:8275 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:8285 */
+  /* ./parser//parser.nit:8283 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8286 */
+  /* ./parser//parser.nit:8284 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction245____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8286);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8284);
   }
   REGB0 = ATTR_parser___ReduceAction245____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27878,7 +27866,7 @@ void parser___ReduceAction245___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos239]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8289;
+  fra.me.line = 8287;
   fra.me.meth = LOCATE_parser___ReduceAction245___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27886,7 +27874,7 @@ void parser___ReduceAction245___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8289 */
+  /* ./parser//parser.nit:8287 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction245____goto(fra.me.REG[1]) = REGB0;
@@ -27900,7 +27888,7 @@ void parser___ReduceAction246___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8293;
+  fra.me.line = 8291;
   fra.me.meth = LOCATE_parser___ReduceAction246___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -27914,58 +27902,58 @@ void parser___ReduceAction246___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8295 */
+  /* ./parser//parser.nit:8293 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8296 */
+  /* ./parser//parser.nit:8294 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8297 */
+  /* ./parser//parser.nit:8295 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8298 */
+  /* ./parser//parser.nit:8296 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8299 */
+  /* ./parser//parser.nit:8297 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8300 */
+  /* ./parser//parser.nit:8298 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8301 */
+  /* ./parser//parser.nit:8299 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8302 */
+  /* ./parser//parser.nit:8300 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8304 */
+  /* ./parser//parser.nit:8302 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8304);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8302);
   }
-  /* ./parser//parser.nit:8306 */
+  /* ./parser//parser.nit:8304 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8306);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8304);
   }
-  /* ./parser//parser.nit:8308 */
+  /* ./parser//parser.nit:8306 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8308);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8306);
   }
-  /* ./parser//parser.nit:8309 */
+  /* ./parser//parser.nit:8307 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:8311 */
+  /* ./parser//parser.nit:8309 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8311);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8309);
   }
-  /* ./parser//parser.nit:8312 */
+  /* ./parser//parser.nit:8310 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:8320 */
+  /* ./parser//parser.nit:8318 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8321 */
+  /* ./parser//parser.nit:8319 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction246____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8321);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8319);
   }
   REGB0 = ATTR_parser___ReduceAction246____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -27981,7 +27969,7 @@ void parser___ReduceAction246___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos240]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8324;
+  fra.me.line = 8322;
   fra.me.meth = LOCATE_parser___ReduceAction246___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -27989,7 +27977,7 @@ void parser___ReduceAction246___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8324 */
+  /* ./parser//parser.nit:8322 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction246____goto(fra.me.REG[1]) = REGB0;
@@ -28003,7 +27991,7 @@ void parser___ReduceAction247___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8328;
+  fra.me.line = 8326;
   fra.me.meth = LOCATE_parser___ReduceAction247___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -28017,53 +28005,53 @@ void parser___ReduceAction247___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8330 */
+  /* ./parser//parser.nit:8328 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8331 */
+  /* ./parser//parser.nit:8329 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8332 */
+  /* ./parser//parser.nit:8330 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8333 */
+  /* ./parser//parser.nit:8331 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8334 */
+  /* ./parser//parser.nit:8332 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8335 */
+  /* ./parser//parser.nit:8333 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8336 */
+  /* ./parser//parser.nit:8334 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8338 */
+  /* ./parser//parser.nit:8336 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8338);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8336);
   }
-  /* ./parser//parser.nit:8340 */
+  /* ./parser//parser.nit:8338 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8340);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8338);
   }
-  /* ./parser//parser.nit:8342 */
+  /* ./parser//parser.nit:8340 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8342);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8340);
   }
-  /* ./parser//parser.nit:8344 */
+  /* ./parser//parser.nit:8342 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8344);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8342);
   }
-  /* ./parser//parser.nit:8345 */
+  /* ./parser//parser.nit:8343 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:8353 */
+  /* ./parser//parser.nit:8351 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8354 */
+  /* ./parser//parser.nit:8352 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction247____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8354);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8352);
   }
   REGB0 = ATTR_parser___ReduceAction247____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28079,7 +28067,7 @@ void parser___ReduceAction247___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos241]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8357;
+  fra.me.line = 8355;
   fra.me.meth = LOCATE_parser___ReduceAction247___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28087,7 +28075,7 @@ void parser___ReduceAction247___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8357 */
+  /* ./parser//parser.nit:8355 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction247____goto(fra.me.REG[1]) = REGB0;
@@ -28101,7 +28089,7 @@ void parser___ReduceAction248___action(val_t p0, val_t p1){
   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.line = 8359;
   fra.me.meth = LOCATE_parser___ReduceAction248___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -28116,64 +28104,64 @@ void parser___ReduceAction248___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8363 */
+  /* ./parser//parser.nit:8361 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8364 */
+  /* ./parser//parser.nit:8362 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8365 */
+  /* ./parser//parser.nit:8363 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8366 */
+  /* ./parser//parser.nit:8364 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8367 */
+  /* ./parser//parser.nit:8365 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8368 */
+  /* ./parser//parser.nit:8366 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8369 */
+  /* ./parser//parser.nit:8367 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8370 */
+  /* ./parser//parser.nit:8368 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8372 */
+  /* ./parser//parser.nit:8370 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8372);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8370);
   }
-  /* ./parser//parser.nit:8374 */
+  /* ./parser//parser.nit:8372 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8374);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8372);
   }
-  /* ./parser//parser.nit:8376 */
+  /* ./parser//parser.nit:8374 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8376);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8374);
   }
-  /* ./parser//parser.nit:8377 */
+  /* ./parser//parser.nit:8375 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* ./parser//parser.nit:8379 */
+  /* ./parser//parser.nit:8377 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8379);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8377);
   }
-  /* ./parser//parser.nit:8381 */
+  /* ./parser//parser.nit:8379 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8381);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8379);
   }
-  /* ./parser//parser.nit:8382 */
+  /* ./parser//parser.nit:8380 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:8390 */
+  /* ./parser//parser.nit:8388 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8391 */
+  /* ./parser//parser.nit:8389 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction248____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8391);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8389);
   }
   REGB0 = ATTR_parser___ReduceAction248____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28189,7 +28177,7 @@ void parser___ReduceAction248___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos242]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8394;
+  fra.me.line = 8392;
   fra.me.meth = LOCATE_parser___ReduceAction248___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28197,7 +28185,7 @@ void parser___ReduceAction248___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8394 */
+  /* ./parser//parser.nit:8392 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction248____goto(fra.me.REG[1]) = REGB0;
@@ -28211,7 +28199,7 @@ void parser___ReduceAction249___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8398;
+  fra.me.line = 8396;
   fra.me.meth = LOCATE_parser___ReduceAction249___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -28224,45 +28212,45 @@ void parser___ReduceAction249___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8400 */
+  /* ./parser//parser.nit:8398 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8401 */
+  /* ./parser//parser.nit:8399 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8402 */
+  /* ./parser//parser.nit:8400 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8403 */
+  /* ./parser//parser.nit:8401 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8404 */
+  /* ./parser//parser.nit:8402 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8405 */
+  /* ./parser//parser.nit:8403 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8407 */
+  /* ./parser//parser.nit:8405 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8407);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8405);
   }
-  /* ./parser//parser.nit:8409 */
+  /* ./parser//parser.nit:8407 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8409);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8407);
   }
-  /* ./parser//parser.nit:8411 */
+  /* ./parser//parser.nit:8409 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8411);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8409);
   }
-  /* ./parser//parser.nit:8412 */
+  /* ./parser//parser.nit:8410 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:8420 */
+  /* ./parser//parser.nit:8418 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8421 */
+  /* ./parser//parser.nit:8419 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction249____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8421);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8419);
   }
   REGB0 = ATTR_parser___ReduceAction249____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28278,7 +28266,7 @@ void parser___ReduceAction249___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos243]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8424;
+  fra.me.line = 8422;
   fra.me.meth = LOCATE_parser___ReduceAction249___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28286,7 +28274,7 @@ void parser___ReduceAction249___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8424 */
+  /* ./parser//parser.nit:8422 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction249____goto(fra.me.REG[1]) = REGB0;
@@ -28300,7 +28288,7 @@ void parser___ReduceAction250___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8428;
+  fra.me.line = 8426;
   fra.me.meth = LOCATE_parser___ReduceAction250___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -28314,56 +28302,56 @@ void parser___ReduceAction250___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8430 */
+  /* ./parser//parser.nit:8428 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8431 */
+  /* ./parser//parser.nit:8429 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8432 */
+  /* ./parser//parser.nit:8430 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8433 */
+  /* ./parser//parser.nit:8431 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8434 */
+  /* ./parser//parser.nit:8432 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8435 */
+  /* ./parser//parser.nit:8433 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8436 */
+  /* ./parser//parser.nit:8434 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8438 */
+  /* ./parser//parser.nit:8436 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TBang, ID_TBang)) /*cast nullable TBang*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8438);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8436);
   }
-  /* ./parser//parser.nit:8440 */
+  /* ./parser//parser.nit:8438 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AClosureId, ID_AClosureId)) /*cast nullable AClosureId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8440);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8438);
   }
-  /* ./parser//parser.nit:8442 */
+  /* ./parser//parser.nit:8440 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8442);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8440);
   }
-  /* ./parser//parser.nit:8443 */
+  /* ./parser//parser.nit:8441 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[4]);
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./parser//parser.nit:8445 */
+  /* ./parser//parser.nit:8443 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8445);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8443);
   }
-  /* ./parser//parser.nit:8446 */
+  /* ./parser//parser.nit:8444 */
   fra.me.REG[3] = NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[5], fra.me.REG[7], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:8454 */
+  /* ./parser//parser.nit:8452 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8455 */
+  /* ./parser//parser.nit:8453 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction250____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8455);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8453);
   }
   REGB0 = ATTR_parser___ReduceAction250____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28379,7 +28367,7 @@ void parser___ReduceAction250___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos244]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8458;
+  fra.me.line = 8456;
   fra.me.meth = LOCATE_parser___ReduceAction250___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28387,7 +28375,7 @@ void parser___ReduceAction250___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8458 */
+  /* ./parser//parser.nit:8456 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction250____goto(fra.me.REG[1]) = REGB0;
@@ -28401,7 +28389,7 @@ void parser___ReduceAction251___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8462;
+  fra.me.line = 8460;
   fra.me.meth = LOCATE_parser___ReduceAction251___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28411,25 +28399,25 @@ void parser___ReduceAction251___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8464 */
+  /* ./parser//parser.nit:8462 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8465 */
+  /* ./parser//parser.nit:8463 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8467 */
+  /* ./parser//parser.nit:8465 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8467);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8465);
   }
-  /* ./parser//parser.nit:8468 */
+  /* ./parser//parser.nit:8466 */
   fra.me.REG[3] = NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[3]);
-  /* ./parser//parser.nit:8471 */
+  /* ./parser//parser.nit:8469 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8472 */
+  /* ./parser//parser.nit:8470 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction251____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8472);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8470);
   }
   REGB0 = ATTR_parser___ReduceAction251____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28445,7 +28433,7 @@ void parser___ReduceAction251___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos245]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8475;
+  fra.me.line = 8473;
   fra.me.meth = LOCATE_parser___ReduceAction251___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28453,7 +28441,7 @@ void parser___ReduceAction251___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8475 */
+  /* ./parser//parser.nit:8473 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction251____goto(fra.me.REG[1]) = REGB0;
@@ -28467,7 +28455,7 @@ void parser___ReduceAction252___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8479;
+  fra.me.line = 8477;
   fra.me.meth = LOCATE_parser___ReduceAction252___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28477,25 +28465,25 @@ void parser___ReduceAction252___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8481 */
+  /* ./parser//parser.nit:8479 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8482 */
+  /* ./parser//parser.nit:8480 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8484 */
+  /* ./parser//parser.nit:8482 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwbreak, ID_TKwbreak)) /*cast nullable TKwbreak*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8484);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8482);
   }
-  /* ./parser//parser.nit:8485 */
+  /* ./parser//parser.nit:8483 */
   fra.me.REG[3] = NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[3]);
-  /* ./parser//parser.nit:8488 */
+  /* ./parser//parser.nit:8486 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8489 */
+  /* ./parser//parser.nit:8487 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction252____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8489);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8487);
   }
   REGB0 = ATTR_parser___ReduceAction252____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28511,7 +28499,7 @@ void parser___ReduceAction252___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos246]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8492;
+  fra.me.line = 8490;
   fra.me.meth = LOCATE_parser___ReduceAction252___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28519,7 +28507,7 @@ void parser___ReduceAction252___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8492 */
+  /* ./parser//parser.nit:8490 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction252____goto(fra.me.REG[1]) = REGB0;
@@ -28533,7 +28521,7 @@ void parser___ReduceAction253___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8496;
+  fra.me.line = 8494;
   fra.me.meth = LOCATE_parser___ReduceAction253___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -28543,25 +28531,25 @@ void parser___ReduceAction253___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8498 */
+  /* ./parser//parser.nit:8496 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8499 */
+  /* ./parser//parser.nit:8497 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8501 */
+  /* ./parser//parser.nit:8499 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8501);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8499);
   }
-  /* ./parser//parser.nit:8502 */
+  /* ./parser//parser.nit:8500 */
   fra.me.REG[3] = NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(NIT_NULL, NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:8507 */
+  /* ./parser//parser.nit:8505 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8508 */
+  /* ./parser//parser.nit:8506 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction253____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8508);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8506);
   }
   REGB0 = ATTR_parser___ReduceAction253____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28577,7 +28565,7 @@ void parser___ReduceAction253___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos247]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8511;
+  fra.me.line = 8509;
   fra.me.meth = LOCATE_parser___ReduceAction253___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28585,7 +28573,7 @@ void parser___ReduceAction253___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8511 */
+  /* ./parser//parser.nit:8509 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction253____goto(fra.me.REG[1]) = REGB0;
@@ -28599,7 +28587,7 @@ void parser___ReduceAction254___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8515;
+  fra.me.line = 8513;
   fra.me.meth = LOCATE_parser___ReduceAction254___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -28610,33 +28598,33 @@ void parser___ReduceAction254___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8517 */
+  /* ./parser//parser.nit:8515 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8518 */
+  /* ./parser//parser.nit:8516 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8519 */
+  /* ./parser//parser.nit:8517 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8521 */
+  /* ./parser//parser.nit:8519 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8521);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8519);
   }
-  /* ./parser//parser.nit:8523 */
+  /* ./parser//parser.nit:8521 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8523);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8521);
   }
-  /* ./parser//parser.nit:8524 */
+  /* ./parser//parser.nit:8522 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:8531 */
+  /* ./parser//parser.nit:8529 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8532 */
+  /* ./parser//parser.nit:8530 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction254____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8532);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8530);
   }
   REGB0 = ATTR_parser___ReduceAction254____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28652,7 +28640,7 @@ void parser___ReduceAction254___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos248]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8535;
+  fra.me.line = 8533;
   fra.me.meth = LOCATE_parser___ReduceAction254___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28660,7 +28648,7 @@ void parser___ReduceAction254___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8535 */
+  /* ./parser//parser.nit:8533 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction254____goto(fra.me.REG[1]) = REGB0;
@@ -28674,7 +28662,7 @@ void parser___ReduceAction255___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8539;
+  fra.me.line = 8537;
   fra.me.meth = LOCATE_parser___ReduceAction255___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -28686,41 +28674,41 @@ void parser___ReduceAction255___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8541 */
+  /* ./parser//parser.nit:8539 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8542 */
+  /* ./parser//parser.nit:8540 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8543 */
+  /* ./parser//parser.nit:8541 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8544 */
+  /* ./parser//parser.nit:8542 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8546 */
+  /* ./parser//parser.nit:8544 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8546);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8544);
   }
-  /* ./parser//parser.nit:8548 */
+  /* ./parser//parser.nit:8546 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8548);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8546);
   }
-  /* ./parser//parser.nit:8550 */
+  /* ./parser//parser.nit:8548 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8550);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8548);
   }
-  /* ./parser//parser.nit:8551 */
+  /* ./parser//parser.nit:8549 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL, NIT_NULL);
-  /* ./parser//parser.nit:8558 */
+  /* ./parser//parser.nit:8556 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8559 */
+  /* ./parser//parser.nit:8557 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction255____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8559);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8557);
   }
   REGB0 = ATTR_parser___ReduceAction255____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28736,7 +28724,7 @@ void parser___ReduceAction255___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos249]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8562;
+  fra.me.line = 8560;
   fra.me.meth = LOCATE_parser___ReduceAction255___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28744,7 +28732,7 @@ void parser___ReduceAction255___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8562 */
+  /* ./parser//parser.nit:8560 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction255____goto(fra.me.REG[1]) = REGB0;
@@ -28758,7 +28746,7 @@ void parser___ReduceAction256___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8566;
+  fra.me.line = 8564;
   fra.me.meth = LOCATE_parser___ReduceAction256___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -28771,51 +28759,51 @@ void parser___ReduceAction256___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8568 */
+  /* ./parser//parser.nit:8566 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8569 */
+  /* ./parser//parser.nit:8567 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8570 */
+  /* ./parser//parser.nit:8568 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8571 */
+  /* ./parser//parser.nit:8569 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8572 */
+  /* ./parser//parser.nit:8570 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8573 */
+  /* ./parser//parser.nit:8571 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8575 */
+  /* ./parser//parser.nit:8573 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8575);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8573);
   }
-  /* ./parser//parser.nit:8577 */
+  /* ./parser//parser.nit:8575 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8577);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8575);
   }
-  /* ./parser//parser.nit:8579 */
+  /* ./parser//parser.nit:8577 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8579);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8577);
   }
-  /* ./parser//parser.nit:8581 */
+  /* ./parser//parser.nit:8579 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8581);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8579);
   }
-  /* ./parser//parser.nit:8582 */
+  /* ./parser//parser.nit:8580 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[6], fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8589 */
+  /* ./parser//parser.nit:8587 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8590 */
+  /* ./parser//parser.nit:8588 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction256____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8590);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8588);
   }
   REGB0 = ATTR_parser___ReduceAction256____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28831,7 +28819,7 @@ void parser___ReduceAction256___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos250]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8593;
+  fra.me.line = 8591;
   fra.me.meth = LOCATE_parser___ReduceAction256___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28839,7 +28827,7 @@ void parser___ReduceAction256___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8593 */
+  /* ./parser//parser.nit:8591 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction256____goto(fra.me.REG[1]) = REGB0;
@@ -28853,7 +28841,7 @@ void parser___ReduceAction257___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8597;
+  fra.me.line = 8595;
   fra.me.meth = LOCATE_parser___ReduceAction257___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -28867,59 +28855,59 @@ void parser___ReduceAction257___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8599 */
+  /* ./parser//parser.nit:8597 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8600 */
+  /* ./parser//parser.nit:8598 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8601 */
+  /* ./parser//parser.nit:8599 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8602 */
+  /* ./parser//parser.nit:8600 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8603 */
+  /* ./parser//parser.nit:8601 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8604 */
+  /* ./parser//parser.nit:8602 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8605 */
+  /* ./parser//parser.nit:8603 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8607 */
+  /* ./parser//parser.nit:8605 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwvar, ID_TKwvar)) /*cast nullable TKwvar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8607);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8605);
   }
-  /* ./parser//parser.nit:8609 */
+  /* ./parser//parser.nit:8607 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8609);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8607);
   }
-  /* ./parser//parser.nit:8611 */
+  /* ./parser//parser.nit:8609 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8611);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8609);
   }
-  /* ./parser//parser.nit:8613 */
+  /* ./parser//parser.nit:8611 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8613);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8611);
   }
-  /* ./parser//parser.nit:8615 */
+  /* ./parser//parser.nit:8613 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8615);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8613);
   }
-  /* ./parser//parser.nit:8616 */
+  /* ./parser//parser.nit:8614 */
   fra.me.REG[3] = NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8623 */
+  /* ./parser//parser.nit:8621 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8624 */
+  /* ./parser//parser.nit:8622 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction257____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8624);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8622);
   }
   REGB0 = ATTR_parser___ReduceAction257____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -28935,7 +28923,7 @@ void parser___ReduceAction257___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos251]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8627;
+  fra.me.line = 8625;
   fra.me.meth = LOCATE_parser___ReduceAction257___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -28943,7 +28931,7 @@ void parser___ReduceAction257___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8627 */
+  /* ./parser//parser.nit:8625 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction257____goto(fra.me.REG[1]) = REGB0;
@@ -28957,7 +28945,7 @@ void parser___ReduceAction258___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8631;
+  fra.me.line = 8629;
   fra.me.meth = LOCATE_parser___ReduceAction258___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -28970,53 +28958,53 @@ void parser___ReduceAction258___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8633 */
+  /* ./parser//parser.nit:8631 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8634 */
+  /* ./parser//parser.nit:8632 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8635 */
+  /* ./parser//parser.nit:8633 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8636 */
+  /* ./parser//parser.nit:8634 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8637 */
+  /* ./parser//parser.nit:8635 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8638 */
+  /* ./parser//parser.nit:8636 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8639 */
+  /* ./parser//parser.nit:8637 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8641 */
+  /* ./parser//parser.nit:8639 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8641);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8639);
   }
-  /* ./parser//parser.nit:8643 */
+  /* ./parser//parser.nit:8641 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8643);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8641);
   }
-  /* ./parser//parser.nit:8645 */
+  /* ./parser//parser.nit:8643 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8645);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8643);
   }
-  /* ./parser//parser.nit:8647 */
+  /* ./parser//parser.nit:8645 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8647);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8645);
   }
-  /* ./parser//parser.nit:8648 */
+  /* ./parser//parser.nit:8646 */
   fra.me.REG[3] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8654 */
+  /* ./parser//parser.nit:8652 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8655 */
+  /* ./parser//parser.nit:8653 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction258____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8655);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8653);
   }
   REGB0 = ATTR_parser___ReduceAction258____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29032,7 +29020,7 @@ void parser___ReduceAction258___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos252]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8658;
+  fra.me.line = 8656;
   fra.me.meth = LOCATE_parser___ReduceAction258___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29040,7 +29028,7 @@ void parser___ReduceAction258___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8658 */
+  /* ./parser//parser.nit:8656 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction258____goto(fra.me.REG[1]) = REGB0;
@@ -29054,7 +29042,7 @@ void parser___ReduceAction259___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8662;
+  fra.me.line = 8660;
   fra.me.meth = LOCATE_parser___ReduceAction259___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -29067,43 +29055,43 @@ void parser___ReduceAction259___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8664 */
+  /* ./parser//parser.nit:8662 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8665 */
+  /* ./parser//parser.nit:8663 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8666 */
+  /* ./parser//parser.nit:8664 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8667 */
+  /* ./parser//parser.nit:8665 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8668 */
+  /* ./parser//parser.nit:8666 */
   fra.me.REG[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:8671 */
+  /* ./parser//parser.nit:8669 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8671);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8669);
   }
-  /* ./parser//parser.nit:8673 */
+  /* ./parser//parser.nit:8671 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8673);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8671);
   }
-  /* ./parser//parser.nit:8675 */
+  /* ./parser//parser.nit:8673 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8675);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8673);
   }
-  /* ./parser//parser.nit:8676 */
+  /* ./parser//parser.nit:8674 */
   fra.me.REG[3] = NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8682 */
+  /* ./parser//parser.nit:8680 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8683 */
+  /* ./parser//parser.nit:8681 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction259____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8683);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8681);
   }
   REGB0 = ATTR_parser___ReduceAction259____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29119,7 +29107,7 @@ void parser___ReduceAction259___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos253]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8686;
+  fra.me.line = 8684;
   fra.me.meth = LOCATE_parser___ReduceAction259___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29127,7 +29115,7 @@ void parser___ReduceAction259___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8686 */
+  /* ./parser//parser.nit:8684 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction259____goto(fra.me.REG[1]) = REGB0;
@@ -29141,7 +29129,7 @@ void parser___ReduceAction260___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8690;
+  fra.me.line = 8688;
   fra.me.meth = LOCATE_parser___ReduceAction260___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29156,66 +29144,66 @@ void parser___ReduceAction260___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8692 */
+  /* ./parser//parser.nit:8690 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8693 */
+  /* ./parser//parser.nit:8691 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8694 */
+  /* ./parser//parser.nit:8692 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8695 */
+  /* ./parser//parser.nit:8693 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8696 */
+  /* ./parser//parser.nit:8694 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8697 */
+  /* ./parser//parser.nit:8695 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8698 */
+  /* ./parser//parser.nit:8696 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8699 */
+  /* ./parser//parser.nit:8697 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8700 */
+  /* ./parser//parser.nit:8698 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8702 */
+  /* ./parser//parser.nit:8700 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8702);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8700);
   }
-  /* ./parser//parser.nit:8704 */
+  /* ./parser//parser.nit:8702 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8704);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8702);
   }
-  /* ./parser//parser.nit:8706 */
+  /* ./parser//parser.nit:8704 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8706);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8704);
   }
-  /* ./parser//parser.nit:8707 */
+  /* ./parser//parser.nit:8705 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* ./parser//parser.nit:8709 */
+  /* ./parser//parser.nit:8707 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8709);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8707);
   }
-  /* ./parser//parser.nit:8711 */
+  /* ./parser//parser.nit:8709 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8711);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8709);
   }
-  /* ./parser//parser.nit:8712 */
+  /* ./parser//parser.nit:8710 */
   fra.me.REG[3] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8719 */
+  /* ./parser//parser.nit:8717 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8720 */
+  /* ./parser//parser.nit:8718 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction260____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8720);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8718);
   }
   REGB0 = ATTR_parser___ReduceAction260____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29231,7 +29219,7 @@ void parser___ReduceAction260___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos254]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8723;
+  fra.me.line = 8721;
   fra.me.meth = LOCATE_parser___ReduceAction260___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29239,7 +29227,7 @@ void parser___ReduceAction260___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8723 */
+  /* ./parser//parser.nit:8721 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction260____goto(fra.me.REG[1]) = REGB0;
@@ -29253,7 +29241,7 @@ void parser___ReduceAction261___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8727;
+  fra.me.line = 8725;
   fra.me.meth = LOCATE_parser___ReduceAction261___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29268,56 +29256,56 @@ void parser___ReduceAction261___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8729 */
+  /* ./parser//parser.nit:8727 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8730 */
+  /* ./parser//parser.nit:8728 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8731 */
+  /* ./parser//parser.nit:8729 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8732 */
+  /* ./parser//parser.nit:8730 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8733 */
+  /* ./parser//parser.nit:8731 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8734 */
+  /* ./parser//parser.nit:8732 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8735 */
+  /* ./parser//parser.nit:8733 */
   fra.me.REG[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:8738 */
+  /* ./parser//parser.nit:8736 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8736);
   }
-  /* ./parser//parser.nit:8740 */
+  /* ./parser//parser.nit:8738 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8740);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8738);
   }
-  /* ./parser//parser.nit:8741 */
+  /* ./parser//parser.nit:8739 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:8743 */
+  /* ./parser//parser.nit:8741 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8743);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8741);
   }
-  /* ./parser//parser.nit:8745 */
+  /* ./parser//parser.nit:8743 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8745);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8743);
   }
-  /* ./parser//parser.nit:8746 */
+  /* ./parser//parser.nit:8744 */
   fra.me.REG[3] = NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[8], fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8753 */
+  /* ./parser//parser.nit:8751 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8754 */
+  /* ./parser//parser.nit:8752 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction261____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8754);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8752);
   }
   REGB0 = ATTR_parser___ReduceAction261____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29333,7 +29321,7 @@ void parser___ReduceAction261___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos255]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8757;
+  fra.me.line = 8755;
   fra.me.meth = LOCATE_parser___ReduceAction261___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29341,7 +29329,7 @@ void parser___ReduceAction261___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8757 */
+  /* ./parser//parser.nit:8755 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction261____goto(fra.me.REG[1]) = REGB0;
@@ -29355,7 +29343,7 @@ void parser___ReduceAction262___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8761;
+  fra.me.line = 8759;
   fra.me.meth = LOCATE_parser___ReduceAction262___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -29369,54 +29357,54 @@ void parser___ReduceAction262___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8763 */
+  /* ./parser//parser.nit:8761 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8764 */
+  /* ./parser//parser.nit:8762 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8765 */
+  /* ./parser//parser.nit:8763 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8766 */
+  /* ./parser//parser.nit:8764 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8767 */
+  /* ./parser//parser.nit:8765 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8768 */
+  /* ./parser//parser.nit:8766 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8770 */
+  /* ./parser//parser.nit:8768 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8770);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8768);
   }
-  /* ./parser//parser.nit:8772 */
+  /* ./parser//parser.nit:8770 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8772);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8770);
   }
-  /* ./parser//parser.nit:8773 */
+  /* ./parser//parser.nit:8771 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:8775 */
+  /* ./parser//parser.nit:8773 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TAssign, ID_TAssign)) /*cast nullable TAssign*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8775);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8773);
   }
-  /* ./parser//parser.nit:8777 */
+  /* ./parser//parser.nit:8775 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8777);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8775);
   }
-  /* ./parser//parser.nit:8778 */
+  /* ./parser//parser.nit:8776 */
   fra.me.REG[3] = NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8784 */
+  /* ./parser//parser.nit:8782 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8785 */
+  /* ./parser//parser.nit:8783 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction262____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8785);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8783);
   }
   REGB0 = ATTR_parser___ReduceAction262____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29432,7 +29420,7 @@ void parser___ReduceAction262___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos256]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8788;
+  fra.me.line = 8786;
   fra.me.meth = LOCATE_parser___ReduceAction262___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29440,7 +29428,7 @@ void parser___ReduceAction262___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8788 */
+  /* ./parser//parser.nit:8786 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction262____goto(fra.me.REG[1]) = REGB0;
@@ -29454,7 +29442,7 @@ void parser___ReduceAction263___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8792;
+  fra.me.line = 8790;
   fra.me.meth = LOCATE_parser___ReduceAction263___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -29467,53 +29455,53 @@ void parser___ReduceAction263___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8794 */
+  /* ./parser//parser.nit:8792 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8795 */
+  /* ./parser//parser.nit:8793 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8796 */
+  /* ./parser//parser.nit:8794 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8797 */
+  /* ./parser//parser.nit:8795 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8798 */
+  /* ./parser//parser.nit:8796 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8799 */
+  /* ./parser//parser.nit:8797 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8800 */
+  /* ./parser//parser.nit:8798 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8802 */
+  /* ./parser//parser.nit:8800 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8802);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8800);
   }
-  /* ./parser//parser.nit:8804 */
+  /* ./parser//parser.nit:8802 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8804);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8802);
   }
-  /* ./parser//parser.nit:8806 */
+  /* ./parser//parser.nit:8804 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8806);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8804);
   }
-  /* ./parser//parser.nit:8808 */
+  /* ./parser//parser.nit:8806 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8808);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8806);
   }
-  /* ./parser//parser.nit:8809 */
+  /* ./parser//parser.nit:8807 */
   fra.me.REG[3] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8815 */
+  /* ./parser//parser.nit:8813 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8816 */
+  /* ./parser//parser.nit:8814 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction263____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8816);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8814);
   }
   REGB0 = ATTR_parser___ReduceAction263____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29529,7 +29517,7 @@ void parser___ReduceAction263___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos257]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8819;
+  fra.me.line = 8817;
   fra.me.meth = LOCATE_parser___ReduceAction263___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29537,7 +29525,7 @@ void parser___ReduceAction263___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8819 */
+  /* ./parser//parser.nit:8817 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction263____goto(fra.me.REG[1]) = REGB0;
@@ -29551,7 +29539,7 @@ void parser___ReduceAction264___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8823;
+  fra.me.line = 8821;
   fra.me.meth = LOCATE_parser___ReduceAction264___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -29564,43 +29552,43 @@ void parser___ReduceAction264___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8825 */
+  /* ./parser//parser.nit:8823 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8826 */
+  /* ./parser//parser.nit:8824 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8827 */
+  /* ./parser//parser.nit:8825 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8828 */
+  /* ./parser//parser.nit:8826 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8829 */
+  /* ./parser//parser.nit:8827 */
   fra.me.REG[6] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:8832 */
+  /* ./parser//parser.nit:8830 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8832);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8830);
   }
-  /* ./parser//parser.nit:8834 */
+  /* ./parser//parser.nit:8832 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8834);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8832);
   }
-  /* ./parser//parser.nit:8836 */
+  /* ./parser//parser.nit:8834 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8836);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8834);
   }
-  /* ./parser//parser.nit:8837 */
+  /* ./parser//parser.nit:8835 */
   fra.me.REG[3] = NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8843 */
+  /* ./parser//parser.nit:8841 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8844 */
+  /* ./parser//parser.nit:8842 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction264____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8844);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8842);
   }
   REGB0 = ATTR_parser___ReduceAction264____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29616,7 +29604,7 @@ void parser___ReduceAction264___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos258]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8847;
+  fra.me.line = 8845;
   fra.me.meth = LOCATE_parser___ReduceAction264___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29624,7 +29612,7 @@ void parser___ReduceAction264___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8847 */
+  /* ./parser//parser.nit:8845 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction264____goto(fra.me.REG[1]) = REGB0;
@@ -29638,7 +29626,7 @@ void parser___ReduceAction265___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8851;
+  fra.me.line = 8849;
   fra.me.meth = LOCATE_parser___ReduceAction265___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29653,66 +29641,66 @@ void parser___ReduceAction265___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8853 */
+  /* ./parser//parser.nit:8851 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8854 */
+  /* ./parser//parser.nit:8852 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8855 */
+  /* ./parser//parser.nit:8853 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8856 */
+  /* ./parser//parser.nit:8854 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8857 */
+  /* ./parser//parser.nit:8855 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8858 */
+  /* ./parser//parser.nit:8856 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8859 */
+  /* ./parser//parser.nit:8857 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8860 */
+  /* ./parser//parser.nit:8858 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8861 */
+  /* ./parser//parser.nit:8859 */
   fra.me.REG[8] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8863 */
+  /* ./parser//parser.nit:8861 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8863);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8861);
   }
-  /* ./parser//parser.nit:8865 */
+  /* ./parser//parser.nit:8863 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8865);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8863);
   }
-  /* ./parser//parser.nit:8867 */
+  /* ./parser//parser.nit:8865 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8867);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8865);
   }
-  /* ./parser//parser.nit:8868 */
+  /* ./parser//parser.nit:8866 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8], fra.me.REG[5]);
   fra.me.REG[8] = fra.me.REG[5];
-  /* ./parser//parser.nit:8870 */
+  /* ./parser//parser.nit:8868 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8870);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8868);
   }
-  /* ./parser//parser.nit:8872 */
+  /* ./parser//parser.nit:8870 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8872);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8870);
   }
-  /* ./parser//parser.nit:8873 */
+  /* ./parser//parser.nit:8871 */
   fra.me.REG[3] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[8], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8880 */
+  /* ./parser//parser.nit:8878 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8881 */
+  /* ./parser//parser.nit:8879 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction265____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8881);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8879);
   }
   REGB0 = ATTR_parser___ReduceAction265____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29728,7 +29716,7 @@ void parser___ReduceAction265___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos259]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8884;
+  fra.me.line = 8882;
   fra.me.meth = LOCATE_parser___ReduceAction265___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29736,7 +29724,7 @@ void parser___ReduceAction265___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8884 */
+  /* ./parser//parser.nit:8882 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction265____goto(fra.me.REG[1]) = REGB0;
@@ -29750,7 +29738,7 @@ void parser___ReduceAction266___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8888;
+  fra.me.line = 8886;
   fra.me.meth = LOCATE_parser___ReduceAction266___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -29765,56 +29753,56 @@ void parser___ReduceAction266___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8890 */
+  /* ./parser//parser.nit:8888 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8891 */
+  /* ./parser//parser.nit:8889 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8892 */
+  /* ./parser//parser.nit:8890 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8893 */
+  /* ./parser//parser.nit:8891 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8894 */
+  /* ./parser//parser.nit:8892 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8895 */
+  /* ./parser//parser.nit:8893 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8896 */
+  /* ./parser//parser.nit:8894 */
   fra.me.REG[8] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:8899 */
+  /* ./parser//parser.nit:8897 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8899);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8897);
   }
-  /* ./parser//parser.nit:8901 */
+  /* ./parser//parser.nit:8899 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8901);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8899);
   }
-  /* ./parser//parser.nit:8902 */
+  /* ./parser//parser.nit:8900 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:8904 */
+  /* ./parser//parser.nit:8902 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8904);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8902);
   }
-  /* ./parser//parser.nit:8906 */
+  /* ./parser//parser.nit:8904 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8906);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8904);
   }
-  /* ./parser//parser.nit:8907 */
+  /* ./parser//parser.nit:8905 */
   fra.me.REG[3] = NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[8], fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8914 */
+  /* ./parser//parser.nit:8912 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8915 */
+  /* ./parser//parser.nit:8913 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction266____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8915);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8913);
   }
   REGB0 = ATTR_parser___ReduceAction266____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29830,7 +29818,7 @@ void parser___ReduceAction266___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos260]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8918;
+  fra.me.line = 8916;
   fra.me.meth = LOCATE_parser___ReduceAction266___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29838,7 +29826,7 @@ void parser___ReduceAction266___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8918 */
+  /* ./parser//parser.nit:8916 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction266____goto(fra.me.REG[1]) = REGB0;
@@ -29852,7 +29840,7 @@ void parser___ReduceAction267___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8922;
+  fra.me.line = 8920;
   fra.me.meth = LOCATE_parser___ReduceAction267___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -29866,54 +29854,54 @@ void parser___ReduceAction267___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8924 */
+  /* ./parser//parser.nit:8922 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8925 */
+  /* ./parser//parser.nit:8923 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8926 */
+  /* ./parser//parser.nit:8924 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8927 */
+  /* ./parser//parser.nit:8925 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8928 */
+  /* ./parser//parser.nit:8926 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8929 */
+  /* ./parser//parser.nit:8927 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:8931 */
+  /* ./parser//parser.nit:8929 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8931);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8929);
   }
-  /* ./parser//parser.nit:8933 */
+  /* ./parser//parser.nit:8931 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8933);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8931);
   }
-  /* ./parser//parser.nit:8934 */
+  /* ./parser//parser.nit:8932 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[5]);
   fra.me.REG[7] = fra.me.REG[5];
-  /* ./parser//parser.nit:8936 */
+  /* ./parser//parser.nit:8934 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AAssignOp, ID_AAssignOp)) /*cast nullable AAssignOp*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8936);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8934);
   }
-  /* ./parser//parser.nit:8938 */
+  /* ./parser//parser.nit:8936 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8938);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8936);
   }
-  /* ./parser//parser.nit:8939 */
+  /* ./parser//parser.nit:8937 */
   fra.me.REG[3] = NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[6], fra.me.REG[7], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:8945 */
+  /* ./parser//parser.nit:8943 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8946 */
+  /* ./parser//parser.nit:8944 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction267____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8946);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8944);
   }
   REGB0 = ATTR_parser___ReduceAction267____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29929,7 +29917,7 @@ void parser___ReduceAction267___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos261]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8949;
+  fra.me.line = 8947;
   fra.me.meth = LOCATE_parser___ReduceAction267___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -29937,7 +29925,7 @@ void parser___ReduceAction267___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8949 */
+  /* ./parser//parser.nit:8947 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction267____goto(fra.me.REG[1]) = REGB0;
@@ -29951,7 +29939,7 @@ void parser___ReduceAction268___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8953;
+  fra.me.line = 8951;
   fra.me.meth = LOCATE_parser___ReduceAction268___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -29961,25 +29949,25 @@ void parser___ReduceAction268___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8955 */
+  /* ./parser//parser.nit:8953 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8956 */
+  /* ./parser//parser.nit:8954 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8958 */
+  /* ./parser//parser.nit:8956 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TPluseq, ID_TPluseq)) /*cast nullable TPluseq*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8958);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8956);
   }
-  /* ./parser//parser.nit:8959 */
+  /* ./parser//parser.nit:8957 */
   fra.me.REG[3] = NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[3]);
-  /* ./parser//parser.nit:8962 */
+  /* ./parser//parser.nit:8960 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8963 */
+  /* ./parser//parser.nit:8961 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction268____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8963);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8961);
   }
   REGB0 = ATTR_parser___ReduceAction268____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -29995,7 +29983,7 @@ void parser___ReduceAction268___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos262]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8966;
+  fra.me.line = 8964;
   fra.me.meth = LOCATE_parser___ReduceAction268___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30003,7 +29991,7 @@ void parser___ReduceAction268___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8966 */
+  /* ./parser//parser.nit:8964 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction268____goto(fra.me.REG[1]) = REGB0;
@@ -30017,7 +30005,7 @@ void parser___ReduceAction269___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8970;
+  fra.me.line = 8968;
   fra.me.meth = LOCATE_parser___ReduceAction269___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -30027,25 +30015,25 @@ void parser___ReduceAction269___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8972 */
+  /* ./parser//parser.nit:8970 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8973 */
+  /* ./parser//parser.nit:8971 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8975 */
+  /* ./parser//parser.nit:8973 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TMinuseq, ID_TMinuseq)) /*cast nullable TMinuseq*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8973);
   }
-  /* ./parser//parser.nit:8976 */
+  /* ./parser//parser.nit:8974 */
   fra.me.REG[3] = NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[3]);
-  /* ./parser//parser.nit:8979 */
+  /* ./parser//parser.nit:8977 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:8980 */
+  /* ./parser//parser.nit:8978 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction269____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8980);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 8978);
   }
   REGB0 = ATTR_parser___ReduceAction269____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30061,7 +30049,7 @@ void parser___ReduceAction269___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos263]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8983;
+  fra.me.line = 8981;
   fra.me.meth = LOCATE_parser___ReduceAction269___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30069,7 +30057,7 @@ void parser___ReduceAction269___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:8983 */
+  /* ./parser//parser.nit:8981 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction269____goto(fra.me.REG[1]) = REGB0;
@@ -30083,7 +30071,7 @@ void parser___ReduceAction270___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 8987;
+  fra.me.line = 8985;
   fra.me.meth = LOCATE_parser___ReduceAction270___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -30095,41 +30083,41 @@ void parser___ReduceAction270___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:8989 */
+  /* ./parser//parser.nit:8987 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:8990 */
+  /* ./parser//parser.nit:8988 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8991 */
+  /* ./parser//parser.nit:8989 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8992 */
+  /* ./parser//parser.nit:8990 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:8994 */
+  /* ./parser//parser.nit:8992 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8994);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8992);
   }
-  /* ./parser//parser.nit:8996 */
+  /* ./parser//parser.nit:8994 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8996);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8994);
   }
-  /* ./parser//parser.nit:8998 */
+  /* ./parser//parser.nit:8996 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 8998);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 8996);
   }
-  /* ./parser//parser.nit:8999 */
+  /* ./parser//parser.nit:8997 */
   fra.me.REG[3] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9004 */
+  /* ./parser//parser.nit:9002 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9005 */
+  /* ./parser//parser.nit:9003 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction270____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9005);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9003);
   }
   REGB0 = ATTR_parser___ReduceAction270____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30145,7 +30133,7 @@ void parser___ReduceAction270___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos264]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9008;
+  fra.me.line = 9006;
   fra.me.meth = LOCATE_parser___ReduceAction270___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30153,7 +30141,7 @@ void parser___ReduceAction270___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9008 */
+  /* ./parser//parser.nit:9006 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction270____goto(fra.me.REG[1]) = REGB0;
@@ -30167,7 +30155,7 @@ void parser___ReduceAction271___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9012;
+  fra.me.line = 9010;
   fra.me.meth = LOCATE_parser___ReduceAction271___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -30178,33 +30166,33 @@ void parser___ReduceAction271___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9014 */
+  /* ./parser//parser.nit:9012 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9015 */
+  /* ./parser//parser.nit:9013 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9016 */
+  /* ./parser//parser.nit:9014 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9018 */
+  /* ./parser//parser.nit:9016 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9018);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9016);
   }
-  /* ./parser//parser.nit:9020 */
+  /* ./parser//parser.nit:9018 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9020);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9018);
   }
-  /* ./parser//parser.nit:9021 */
+  /* ./parser//parser.nit:9019 */
   fra.me.REG[3] = NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9026 */
+  /* ./parser//parser.nit:9024 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9027 */
+  /* ./parser//parser.nit:9025 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction271____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9027);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9025);
   }
   REGB0 = ATTR_parser___ReduceAction271____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30220,7 +30208,7 @@ void parser___ReduceAction271___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos265]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9030;
+  fra.me.line = 9028;
   fra.me.meth = LOCATE_parser___ReduceAction271___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30228,7 +30216,7 @@ void parser___ReduceAction271___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9030 */
+  /* ./parser//parser.nit:9028 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction271____goto(fra.me.REG[1]) = REGB0;
@@ -30242,7 +30230,7 @@ void parser___ReduceAction272___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9034;
+  fra.me.line = 9032;
   fra.me.meth = LOCATE_parser___ReduceAction272___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -30255,57 +30243,57 @@ void parser___ReduceAction272___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9036 */
+  /* ./parser//parser.nit:9034 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9037 */
+  /* ./parser//parser.nit:9035 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9038 */
+  /* ./parser//parser.nit:9036 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9039 */
+  /* ./parser//parser.nit:9037 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9038 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9039 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9040 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9041 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9042 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9043 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9044 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9046 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9046);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9044);
   }
-  /* ./parser//parser.nit:9048 */
+  /* ./parser//parser.nit:9046 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9048);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9046);
   }
-  /* ./parser//parser.nit:9050 */
+  /* ./parser//parser.nit:9048 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9050);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9048);
   }
-  /* ./parser//parser.nit:9052 */
+  /* ./parser//parser.nit:9050 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9052);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9050);
   }
-  /* ./parser//parser.nit:9053 */
+  /* ./parser//parser.nit:9051 */
   fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9059 */
+  /* ./parser//parser.nit:9057 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9060 */
+  /* ./parser//parser.nit:9058 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction272____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9060);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9058);
   }
   REGB0 = ATTR_parser___ReduceAction272____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30321,7 +30309,7 @@ void parser___ReduceAction272___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos266]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9063;
+  fra.me.line = 9061;
   fra.me.meth = LOCATE_parser___ReduceAction272___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30329,7 +30317,7 @@ void parser___ReduceAction272___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9063 */
+  /* ./parser//parser.nit:9061 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction272____goto(fra.me.REG[1]) = REGB0;
@@ -30343,7 +30331,7 @@ void parser___ReduceAction273___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9067;
+  fra.me.line = 9065;
   fra.me.meth = LOCATE_parser___ReduceAction273___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -30355,47 +30343,47 @@ void parser___ReduceAction273___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9069 */
+  /* ./parser//parser.nit:9067 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9070 */
+  /* ./parser//parser.nit:9068 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9069 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9070 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9071 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9072 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9073 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9074 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9075 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9077 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9077);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9075);
   }
-  /* ./parser//parser.nit:9079 */
+  /* ./parser//parser.nit:9077 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9079);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9077);
   }
-  /* ./parser//parser.nit:9081 */
+  /* ./parser//parser.nit:9079 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9081);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9079);
   }
-  /* ./parser//parser.nit:9082 */
+  /* ./parser//parser.nit:9080 */
   fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9088 */
+  /* ./parser//parser.nit:9086 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9089 */
+  /* ./parser//parser.nit:9087 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction273____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9089);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9087);
   }
   REGB0 = ATTR_parser___ReduceAction273____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30411,7 +30399,7 @@ void parser___ReduceAction273___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos267]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9092;
+  fra.me.line = 9090;
   fra.me.meth = LOCATE_parser___ReduceAction273___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30419,7 +30407,7 @@ void parser___ReduceAction273___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9092 */
+  /* ./parser//parser.nit:9090 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction273____goto(fra.me.REG[1]) = REGB0;
@@ -30433,7 +30421,7 @@ void parser___ReduceAction274___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9096;
+  fra.me.line = 9094;
   fra.me.meth = LOCATE_parser___ReduceAction274___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -30446,57 +30434,57 @@ void parser___ReduceAction274___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9098 */
+  /* ./parser//parser.nit:9096 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9099 */
+  /* ./parser//parser.nit:9097 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9100 */
+  /* ./parser//parser.nit:9098 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9099 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9100 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9101 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9102 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9103 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9104 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9105 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9106 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9108 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9108);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9106);
   }
-  /* ./parser//parser.nit:9110 */
+  /* ./parser//parser.nit:9108 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9110);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9108);
   }
-  /* ./parser//parser.nit:9112 */
+  /* ./parser//parser.nit:9110 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9112);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9110);
   }
-  /* ./parser//parser.nit:9114 */
+  /* ./parser//parser.nit:9112 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9114);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9112);
   }
-  /* ./parser//parser.nit:9115 */
+  /* ./parser//parser.nit:9113 */
   fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9121 */
+  /* ./parser//parser.nit:9119 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9122 */
+  /* ./parser//parser.nit:9120 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction274____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9122);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9120);
   }
   REGB0 = ATTR_parser___ReduceAction274____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30512,7 +30500,7 @@ void parser___ReduceAction274___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos268]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9125;
+  fra.me.line = 9123;
   fra.me.meth = LOCATE_parser___ReduceAction274___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30520,7 +30508,7 @@ void parser___ReduceAction274___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9125 */
+  /* ./parser//parser.nit:9123 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction274____goto(fra.me.REG[1]) = REGB0;
@@ -30534,7 +30522,7 @@ void parser___ReduceAction275___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9129;
+  fra.me.line = 9127;
   fra.me.meth = LOCATE_parser___ReduceAction275___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -30546,47 +30534,47 @@ void parser___ReduceAction275___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9131 */
+  /* ./parser//parser.nit:9129 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9132 */
+  /* ./parser//parser.nit:9130 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9131 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9132 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9133 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9134 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9135 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9136 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9137 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9139 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9139);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9137);
   }
-  /* ./parser//parser.nit:9141 */
+  /* ./parser//parser.nit:9139 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9141);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9139);
   }
-  /* ./parser//parser.nit:9143 */
+  /* ./parser//parser.nit:9141 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9143);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9141);
   }
-  /* ./parser//parser.nit:9144 */
+  /* ./parser//parser.nit:9142 */
   fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:9150 */
+  /* ./parser//parser.nit:9148 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9151 */
+  /* ./parser//parser.nit:9149 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction275____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9151);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9149);
   }
   REGB0 = ATTR_parser___ReduceAction275____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30602,7 +30590,7 @@ void parser___ReduceAction275___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos269]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9154;
+  fra.me.line = 9152;
   fra.me.meth = LOCATE_parser___ReduceAction275___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30610,7 +30598,7 @@ void parser___ReduceAction275___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9154 */
+  /* ./parser//parser.nit:9152 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction275____goto(fra.me.REG[1]) = REGB0;
@@ -30624,7 +30612,7 @@ void parser___ReduceAction276___action(val_t p0, val_t p1){
   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.line = 9156;
   fra.me.meth = LOCATE_parser___ReduceAction276___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -30636,49 +30624,49 @@ void parser___ReduceAction276___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9160 */
+  /* ./parser//parser.nit:9158 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9161 */
+  /* ./parser//parser.nit:9159 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9160 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9161 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9162 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9163 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9164 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9165 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9166 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9167 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9169 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9169);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9167);
   }
-  /* ./parser//parser.nit:9171 */
+  /* ./parser//parser.nit:9169 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9171);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9169);
   }
-  /* ./parser//parser.nit:9173 */
+  /* ./parser//parser.nit:9171 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9173);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9171);
   }
-  /* ./parser//parser.nit:9174 */
+  /* ./parser//parser.nit:9172 */
   fra.me.REG[3] = NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[3]);
-  /* ./parser//parser.nit:9180 */
+  /* ./parser//parser.nit:9178 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9181 */
+  /* ./parser//parser.nit:9179 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction276____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9181);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9179);
   }
   REGB0 = ATTR_parser___ReduceAction276____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30694,7 +30682,7 @@ void parser___ReduceAction276___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos270]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9184;
+  fra.me.line = 9182;
   fra.me.meth = LOCATE_parser___ReduceAction276___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30702,7 +30690,7 @@ void parser___ReduceAction276___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9184 */
+  /* ./parser//parser.nit:9182 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction276____goto(fra.me.REG[1]) = REGB0;
@@ -30716,7 +30704,7 @@ void parser___ReduceAction279___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9188;
+  fra.me.line = 9186;
   fra.me.meth = LOCATE_parser___ReduceAction279___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -30728,41 +30716,41 @@ void parser___ReduceAction279___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9190 */
+  /* ./parser//parser.nit:9188 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9191 */
+  /* ./parser//parser.nit:9189 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9192 */
+  /* ./parser//parser.nit:9190 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9193 */
+  /* ./parser//parser.nit:9191 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9195 */
+  /* ./parser//parser.nit:9193 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwloop, ID_TKwloop)) /*cast nullable TKwloop*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9195);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9193);
   }
-  /* ./parser//parser.nit:9197 */
+  /* ./parser//parser.nit:9195 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9197);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9195);
   }
-  /* ./parser//parser.nit:9199 */
+  /* ./parser//parser.nit:9197 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9199);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9197);
   }
-  /* ./parser//parser.nit:9200 */
+  /* ./parser//parser.nit:9198 */
   fra.me.REG[3] = NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9205 */
+  /* ./parser//parser.nit:9203 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9206 */
+  /* ./parser//parser.nit:9204 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction279____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9206);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9204);
   }
   REGB0 = ATTR_parser___ReduceAction279____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30778,7 +30766,7 @@ void parser___ReduceAction279___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos271]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9209;
+  fra.me.line = 9207;
   fra.me.meth = LOCATE_parser___ReduceAction279___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30786,7 +30774,7 @@ void parser___ReduceAction279___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9209 */
+  /* ./parser//parser.nit:9207 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction279____goto(fra.me.REG[1]) = REGB0;
@@ -30800,7 +30788,7 @@ void parser___ReduceAction280___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9213;
+  fra.me.line = 9211;
   fra.me.meth = LOCATE_parser___ReduceAction280___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -30811,33 +30799,33 @@ void parser___ReduceAction280___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9215 */
+  /* ./parser//parser.nit:9213 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9216 */
+  /* ./parser//parser.nit:9214 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9217 */
+  /* ./parser//parser.nit:9215 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9219 */
+  /* ./parser//parser.nit:9217 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwloop, ID_TKwloop)) /*cast nullable TKwloop*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9219);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9217);
   }
-  /* ./parser//parser.nit:9221 */
+  /* ./parser//parser.nit:9219 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9221);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9219);
   }
-  /* ./parser//parser.nit:9222 */
+  /* ./parser//parser.nit:9220 */
   fra.me.REG[3] = NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9227 */
+  /* ./parser//parser.nit:9225 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9228 */
+  /* ./parser//parser.nit:9226 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction280____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9228);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9226);
   }
   REGB0 = ATTR_parser___ReduceAction280____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30853,7 +30841,7 @@ void parser___ReduceAction280___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos272]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9231;
+  fra.me.line = 9229;
   fra.me.meth = LOCATE_parser___ReduceAction280___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30861,7 +30849,7 @@ void parser___ReduceAction280___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9231 */
+  /* ./parser//parser.nit:9229 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction280____goto(fra.me.REG[1]) = REGB0;
@@ -30875,7 +30863,7 @@ void parser___ReduceAction281___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9235;
+  fra.me.line = 9233;
   fra.me.meth = LOCATE_parser___ReduceAction281___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -30889,61 +30877,61 @@ void parser___ReduceAction281___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9237 */
+  /* ./parser//parser.nit:9235 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9238 */
+  /* ./parser//parser.nit:9236 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9239 */
+  /* ./parser//parser.nit:9237 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9240 */
+  /* ./parser//parser.nit:9238 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9241 */
+  /* ./parser//parser.nit:9239 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9242 */
+  /* ./parser//parser.nit:9240 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9243 */
+  /* ./parser//parser.nit:9241 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9244 */
+  /* ./parser//parser.nit:9242 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9246 */
+  /* ./parser//parser.nit:9244 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwwhile, ID_TKwwhile)) /*cast nullable TKwwhile*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9246);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9244);
   }
-  /* ./parser//parser.nit:9248 */
+  /* ./parser//parser.nit:9246 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9248);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9246);
   }
-  /* ./parser//parser.nit:9250 */
+  /* ./parser//parser.nit:9248 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9250);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9248);
   }
-  /* ./parser//parser.nit:9252 */
+  /* ./parser//parser.nit:9250 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9252);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9250);
   }
-  /* ./parser//parser.nit:9254 */
+  /* ./parser//parser.nit:9252 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9254);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9252);
   }
-  /* ./parser//parser.nit:9255 */
+  /* ./parser//parser.nit:9253 */
   fra.me.REG[3] = NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9262 */
+  /* ./parser//parser.nit:9260 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9263 */
+  /* ./parser//parser.nit:9261 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction281____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9263);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9261);
   }
   REGB0 = ATTR_parser___ReduceAction281____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -30959,7 +30947,7 @@ void parser___ReduceAction281___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos273]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9266;
+  fra.me.line = 9264;
   fra.me.meth = LOCATE_parser___ReduceAction281___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -30967,7 +30955,7 @@ void parser___ReduceAction281___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9266 */
+  /* ./parser//parser.nit:9264 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction281____goto(fra.me.REG[1]) = REGB0;
@@ -30981,7 +30969,7 @@ void parser___ReduceAction282___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9270;
+  fra.me.line = 9268;
   fra.me.meth = LOCATE_parser___ReduceAction282___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -30994,53 +30982,53 @@ void parser___ReduceAction282___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9272 */
+  /* ./parser//parser.nit:9270 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9273 */
+  /* ./parser//parser.nit:9271 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9274 */
+  /* ./parser//parser.nit:9272 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9275 */
+  /* ./parser//parser.nit:9273 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9276 */
+  /* ./parser//parser.nit:9274 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9277 */
+  /* ./parser//parser.nit:9275 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9278 */
+  /* ./parser//parser.nit:9276 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9280 */
+  /* ./parser//parser.nit:9278 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwwhile, ID_TKwwhile)) /*cast nullable TKwwhile*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9280);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9278);
   }
-  /* ./parser//parser.nit:9282 */
+  /* ./parser//parser.nit:9280 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9282);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9280);
   }
-  /* ./parser//parser.nit:9284 */
+  /* ./parser//parser.nit:9282 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9284);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9282);
   }
-  /* ./parser//parser.nit:9286 */
+  /* ./parser//parser.nit:9284 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9286);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9284);
   }
-  /* ./parser//parser.nit:9287 */
+  /* ./parser//parser.nit:9285 */
   fra.me.REG[3] = NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9294 */
+  /* ./parser//parser.nit:9292 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9295 */
+  /* ./parser//parser.nit:9293 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction282____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9295);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9293);
   }
   REGB0 = ATTR_parser___ReduceAction282____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31056,7 +31044,7 @@ void parser___ReduceAction282___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos274]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9298;
+  fra.me.line = 9296;
   fra.me.meth = LOCATE_parser___ReduceAction282___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31064,7 +31052,7 @@ void parser___ReduceAction282___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9298 */
+  /* ./parser//parser.nit:9296 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction282____goto(fra.me.REG[1]) = REGB0;
@@ -31078,7 +31066,7 @@ void parser___ReduceAction283___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9302;
+  fra.me.line = 9300;
   fra.me.meth = LOCATE_parser___ReduceAction283___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -31093,75 +31081,75 @@ void parser___ReduceAction283___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9304 */
+  /* ./parser//parser.nit:9302 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9305 */
+  /* ./parser//parser.nit:9303 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9306 */
+  /* ./parser//parser.nit:9304 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9307 */
+  /* ./parser//parser.nit:9305 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9308 */
+  /* ./parser//parser.nit:9306 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9309 */
+  /* ./parser//parser.nit:9307 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9308 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9309 */
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9310 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9311 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9312 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9313 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9314 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9315 */
-  fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9317 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwfor, ID_TKwfor)) /*cast nullable TKwfor*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9315);
+  }
+  /* ./parser//parser.nit:9317 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9317);
   }
   /* ./parser//parser.nit:9319 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TId, ID_TId)) /*cast nullable TId*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9319);
   }
   /* ./parser//parser.nit:9321 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9321);
   }
   /* ./parser//parser.nit:9323 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9323);
   }
   /* ./parser//parser.nit:9325 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9325);
-  }
-  /* ./parser//parser.nit:9327 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_ALabel, ID_ALabel)) /*cast nullable ALabel*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9327);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9325);
   }
-  /* ./parser//parser.nit:9328 */
+  /* ./parser//parser.nit:9326 */
   fra.me.REG[3] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9336 */
+  /* ./parser//parser.nit:9334 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9337 */
+  /* ./parser//parser.nit:9335 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction283____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9337);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9335);
   }
   REGB0 = ATTR_parser___ReduceAction283____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31177,7 +31165,7 @@ void parser___ReduceAction283___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos275]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9340;
+  fra.me.line = 9338;
   fra.me.meth = LOCATE_parser___ReduceAction283___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31185,7 +31173,7 @@ void parser___ReduceAction283___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9340 */
+  /* ./parser//parser.nit:9338 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction283____goto(fra.me.REG[1]) = REGB0;
@@ -31199,7 +31187,7 @@ void parser___ReduceAction284___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9344;
+  fra.me.line = 9342;
   fra.me.meth = LOCATE_parser___ReduceAction284___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -31213,67 +31201,67 @@ void parser___ReduceAction284___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9346 */
+  /* ./parser//parser.nit:9344 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9347 */
+  /* ./parser//parser.nit:9345 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9348 */
+  /* ./parser//parser.nit:9346 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9349 */
+  /* ./parser//parser.nit:9347 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9350 */
+  /* ./parser//parser.nit:9348 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9349 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9350 */
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9351 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9352 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9353 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9354 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9355 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9356 */
-  fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9358 */
   REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_TKwfor, ID_TKwfor)) /*cast nullable TKwfor*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9358);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9356);
   }
-  /* ./parser//parser.nit:9360 */
+  /* ./parser//parser.nit:9358 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9360);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9358);
   }
-  /* ./parser//parser.nit:9362 */
+  /* ./parser//parser.nit:9360 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9362);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9360);
   }
-  /* ./parser//parser.nit:9364 */
+  /* ./parser//parser.nit:9362 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwdo, ID_TKwdo)) /*cast nullable TKwdo*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9364);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9362);
   }
-  /* ./parser//parser.nit:9366 */
+  /* ./parser//parser.nit:9364 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9366);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9364);
   }
-  /* ./parser//parser.nit:9367 */
+  /* ./parser//parser.nit:9365 */
   fra.me.REG[3] = NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9375 */
+  /* ./parser//parser.nit:9373 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9376 */
+  /* ./parser//parser.nit:9374 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction284____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9376);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9374);
   }
   REGB0 = ATTR_parser___ReduceAction284____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31289,7 +31277,7 @@ void parser___ReduceAction284___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos276]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9379;
+  fra.me.line = 9377;
   fra.me.meth = LOCATE_parser___ReduceAction284___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31297,7 +31285,7 @@ void parser___ReduceAction284___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9379 */
+  /* ./parser//parser.nit:9377 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction284____goto(fra.me.REG[1]) = REGB0;
@@ -31311,7 +31299,7 @@ void parser___ReduceAction285___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9383;
+  fra.me.line = 9381;
   fra.me.meth = LOCATE_parser___ReduceAction285___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -31323,43 +31311,43 @@ void parser___ReduceAction285___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9385 */
+  /* ./parser//parser.nit:9383 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9386 */
+  /* ./parser//parser.nit:9384 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9387 */
+  /* ./parser//parser.nit:9385 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9388 */
+  /* ./parser//parser.nit:9386 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9389 */
+  /* ./parser//parser.nit:9387 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9391 */
+  /* ./parser//parser.nit:9389 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9391);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9389);
   }
-  /* ./parser//parser.nit:9393 */
+  /* ./parser//parser.nit:9391 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9393);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9391);
   }
-  /* ./parser//parser.nit:9395 */
+  /* ./parser//parser.nit:9393 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9395);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9393);
   }
-  /* ./parser//parser.nit:9396 */
+  /* ./parser//parser.nit:9394 */
   fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], NIT_NULL, fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9402 */
+  /* ./parser//parser.nit:9400 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9403 */
+  /* ./parser//parser.nit:9401 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction285____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9403);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9401);
   }
   REGB0 = ATTR_parser___ReduceAction285____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31375,7 +31363,7 @@ void parser___ReduceAction285___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos277]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9406;
+  fra.me.line = 9404;
   fra.me.meth = LOCATE_parser___ReduceAction285___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31383,7 +31371,7 @@ void parser___ReduceAction285___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9406 */
+  /* ./parser//parser.nit:9404 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction285____goto(fra.me.REG[1]) = REGB0;
@@ -31397,7 +31385,7 @@ void parser___ReduceAction286___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9410;
+  fra.me.line = 9408;
   fra.me.meth = LOCATE_parser___ReduceAction286___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -31410,51 +31398,51 @@ void parser___ReduceAction286___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9412 */
+  /* ./parser//parser.nit:9410 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9413 */
+  /* ./parser//parser.nit:9411 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9414 */
+  /* ./parser//parser.nit:9412 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9415 */
+  /* ./parser//parser.nit:9413 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9416 */
+  /* ./parser//parser.nit:9414 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9417 */
+  /* ./parser//parser.nit:9415 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9419 */
+  /* ./parser//parser.nit:9417 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9419);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9417);
   }
-  /* ./parser//parser.nit:9421 */
+  /* ./parser//parser.nit:9419 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9421);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9419);
   }
-  /* ./parser//parser.nit:9423 */
+  /* ./parser//parser.nit:9421 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9423);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9421);
   }
-  /* ./parser//parser.nit:9425 */
+  /* ./parser//parser.nit:9423 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9425);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9423);
   }
-  /* ./parser//parser.nit:9426 */
+  /* ./parser//parser.nit:9424 */
   fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9432 */
+  /* ./parser//parser.nit:9430 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9433 */
+  /* ./parser//parser.nit:9431 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction286____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9433);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9431);
   }
   REGB0 = ATTR_parser___ReduceAction286____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31470,7 +31458,7 @@ void parser___ReduceAction286___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos278]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9436;
+  fra.me.line = 9434;
   fra.me.meth = LOCATE_parser___ReduceAction286___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31478,7 +31466,7 @@ void parser___ReduceAction286___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9436 */
+  /* ./parser//parser.nit:9434 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction286____goto(fra.me.REG[1]) = REGB0;
@@ -31492,7 +31480,7 @@ void parser___ReduceAction287___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9440;
+  fra.me.line = 9438;
   fra.me.meth = LOCATE_parser___ReduceAction287___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -31503,33 +31491,33 @@ void parser___ReduceAction287___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9442 */
+  /* ./parser//parser.nit:9440 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9443 */
+  /* ./parser//parser.nit:9441 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9444 */
+  /* ./parser//parser.nit:9442 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9446 */
+  /* ./parser//parser.nit:9444 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9446);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9444);
   }
-  /* ./parser//parser.nit:9448 */
+  /* ./parser//parser.nit:9446 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9448);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9446);
   }
-  /* ./parser//parser.nit:9449 */
+  /* ./parser//parser.nit:9447 */
   fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], NIT_NULL, fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9455 */
+  /* ./parser//parser.nit:9453 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9456 */
+  /* ./parser//parser.nit:9454 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction287____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9456);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9454);
   }
   REGB0 = ATTR_parser___ReduceAction287____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31545,7 +31533,7 @@ void parser___ReduceAction287___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos279]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9459;
+  fra.me.line = 9457;
   fra.me.meth = LOCATE_parser___ReduceAction287___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31553,7 +31541,7 @@ void parser___ReduceAction287___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9459 */
+  /* ./parser//parser.nit:9457 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction287____goto(fra.me.REG[1]) = REGB0;
@@ -31567,7 +31555,7 @@ void parser___ReduceAction288___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9463;
+  fra.me.line = 9461;
   fra.me.meth = LOCATE_parser___ReduceAction288___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -31579,41 +31567,41 @@ void parser___ReduceAction288___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9465 */
+  /* ./parser//parser.nit:9463 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9466 */
+  /* ./parser//parser.nit:9464 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9467 */
+  /* ./parser//parser.nit:9465 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9468 */
+  /* ./parser//parser.nit:9466 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9470 */
+  /* ./parser//parser.nit:9468 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwassert, ID_TKwassert)) /*cast nullable TKwassert*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9470);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9468);
   }
-  /* ./parser//parser.nit:9472 */
+  /* ./parser//parser.nit:9470 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9472);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9470);
   }
-  /* ./parser//parser.nit:9474 */
+  /* ./parser//parser.nit:9472 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9474);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9472);
   }
-  /* ./parser//parser.nit:9475 */
+  /* ./parser//parser.nit:9473 */
   fra.me.REG[3] = NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3], NIT_NULL);
-  /* ./parser//parser.nit:9481 */
+  /* ./parser//parser.nit:9479 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9482 */
+  /* ./parser//parser.nit:9480 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction288____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9482);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9480);
   }
   REGB0 = ATTR_parser___ReduceAction288____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31629,7 +31617,7 @@ void parser___ReduceAction288___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos280]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9485;
+  fra.me.line = 9483;
   fra.me.meth = LOCATE_parser___ReduceAction288___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31637,7 +31625,7 @@ void parser___ReduceAction288___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9485 */
+  /* ./parser//parser.nit:9483 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction288____goto(fra.me.REG[1]) = REGB0;
@@ -31651,7 +31639,7 @@ void parser___ReduceAction289___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9489;
+  fra.me.line = 9487;
   fra.me.meth = LOCATE_parser___ReduceAction289___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -31661,19 +31649,19 @@ void parser___ReduceAction289___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9491 */
+  /* ./parser//parser.nit:9489 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9492 */
+  /* ./parser//parser.nit:9490 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9493 */
+  /* ./parser//parser.nit:9491 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9495 */
+  /* ./parser//parser.nit:9493 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9496 */
+  /* ./parser//parser.nit:9494 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction289____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9496);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9494);
   }
   REGB0 = ATTR_parser___ReduceAction289____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31689,7 +31677,7 @@ void parser___ReduceAction289___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos281]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9499;
+  fra.me.line = 9497;
   fra.me.meth = LOCATE_parser___ReduceAction289___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31697,7 +31685,7 @@ void parser___ReduceAction289___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9499 */
+  /* ./parser//parser.nit:9497 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction289____goto(fra.me.REG[1]) = REGB0;
@@ -31711,7 +31699,7 @@ void parser___ReduceAction293___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9503;
+  fra.me.line = 9501;
   fra.me.meth = LOCATE_parser___ReduceAction293___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -31725,51 +31713,51 @@ void parser___ReduceAction293___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9505 */
+  /* ./parser//parser.nit:9503 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9506 */
+  /* ./parser//parser.nit:9504 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9507 */
+  /* ./parser//parser.nit:9505 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9508 */
+  /* ./parser//parser.nit:9506 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9509 */
+  /* ./parser//parser.nit:9507 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:9510 */
+  /* ./parser//parser.nit:9508 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:9512 */
+  /* ./parser//parser.nit:9510 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9512);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9510);
   }
-  /* ./parser//parser.nit:9514 */
+  /* ./parser//parser.nit:9512 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9514);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9512);
   }
-  /* ./parser//parser.nit:9515 */
+  /* ./parser//parser.nit:9513 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:9517 */
+  /* ./parser//parser.nit:9515 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9517);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9515);
   }
-  /* ./parser//parser.nit:9518 */
+  /* ./parser//parser.nit:9516 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:9519 */
+  /* ./parser//parser.nit:9517 */
   fra.me.REG[7] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:9524 */
+  /* ./parser//parser.nit:9522 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:9525 */
+  /* ./parser//parser.nit:9523 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction293____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9525);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9523);
   }
   REGB0 = ATTR_parser___ReduceAction293____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31785,7 +31773,7 @@ void parser___ReduceAction293___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos282]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9528;
+  fra.me.line = 9526;
   fra.me.meth = LOCATE_parser___ReduceAction293___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31793,7 +31781,7 @@ void parser___ReduceAction293___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9528 */
+  /* ./parser//parser.nit:9526 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction293____goto(fra.me.REG[1]) = REGB0;
@@ -31807,7 +31795,7 @@ void parser___ReduceAction295___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9532;
+  fra.me.line = 9530;
   fra.me.meth = LOCATE_parser___ReduceAction295___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -31822,75 +31810,75 @@ void parser___ReduceAction295___action(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9534 */
+  /* ./parser//parser.nit:9532 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9535 */
+  /* ./parser//parser.nit:9533 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9536 */
+  /* ./parser//parser.nit:9534 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9537 */
+  /* ./parser//parser.nit:9535 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9538 */
+  /* ./parser//parser.nit:9536 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9539 */
+  /* ./parser//parser.nit:9537 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9540 */
+  /* ./parser//parser.nit:9538 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9541 */
+  /* ./parser//parser.nit:9539 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9542 */
+  /* ./parser//parser.nit:9540 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9543 */
+  /* ./parser//parser.nit:9541 */
   fra.me.REG[7] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9544 */
+  /* ./parser//parser.nit:9542 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9545 */
+  /* ./parser//parser.nit:9543 */
   fra.me.REG[8] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9547 */
+  /* ./parser//parser.nit:9545 */
   REGB0 = TAG_Bool((fra.me.REG[8]==NIT_NULL) || VAL_ISA(fra.me.REG[8], COLOR_TKwif, ID_TKwif)) /*cast nullable TKwif*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9545);
+  }
+  /* ./parser//parser.nit:9547 */
+  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9547);
   }
   /* ./parser//parser.nit:9549 */
-  REGB0 = TAG_Bool((fra.me.REG[7]==NIT_NULL) || VAL_ISA(fra.me.REG[7], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwthen, ID_TKwthen)) /*cast nullable TKwthen*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9549);
   }
   /* ./parser//parser.nit:9551 */
-  REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwthen, ID_TKwthen)) /*cast nullable TKwthen*/;
+  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9551);
   }
   /* ./parser//parser.nit:9553 */
-  REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
+  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwelse, ID_TKwelse)) /*cast nullable TKwelse*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_parser, 9553);
   }
   /* ./parser//parser.nit:9555 */
-  REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwelse, ID_TKwelse)) /*cast nullable TKwelse*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9555);
-  }
-  /* ./parser//parser.nit:9557 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9557);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9555);
   }
-  /* ./parser//parser.nit:9558 */
+  /* ./parser//parser.nit:9556 */
   fra.me.REG[3] = NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr(fra.me.REG[8], fra.me.REG[7], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9566 */
+  /* ./parser//parser.nit:9564 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9567 */
+  /* ./parser//parser.nit:9565 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction295____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9567);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9565);
   }
   REGB0 = ATTR_parser___ReduceAction295____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31906,7 +31894,7 @@ void parser___ReduceAction295___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos283]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9570;
+  fra.me.line = 9568;
   fra.me.meth = LOCATE_parser___ReduceAction295___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31914,7 +31902,7 @@ void parser___ReduceAction295___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9570 */
+  /* ./parser//parser.nit:9568 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction295____goto(fra.me.REG[1]) = REGB0;
@@ -31928,7 +31916,7 @@ void parser___ReduceAction297___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9574;
+  fra.me.line = 9572;
   fra.me.meth = LOCATE_parser___ReduceAction297___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -31939,37 +31927,37 @@ void parser___ReduceAction297___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9576 */
+  /* ./parser//parser.nit:9574 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9577 */
+  /* ./parser//parser.nit:9575 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9578 */
+  /* ./parser//parser.nit:9576 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9577 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9579 */
+  /* ./parser//parser.nit:9578 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9580 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9582 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9582);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9580);
   }
-  /* ./parser//parser.nit:9584 */
+  /* ./parser//parser.nit:9582 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9584);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9582);
   }
-  /* ./parser//parser.nit:9585 */
+  /* ./parser//parser.nit:9583 */
   fra.me.REG[3] = NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9589 */
+  /* ./parser//parser.nit:9587 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9590 */
+  /* ./parser//parser.nit:9588 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction297____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9590);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9588);
   }
   REGB0 = ATTR_parser___ReduceAction297____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -31985,7 +31973,7 @@ void parser___ReduceAction297___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos284]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9593;
+  fra.me.line = 9591;
   fra.me.meth = LOCATE_parser___ReduceAction297___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31993,7 +31981,7 @@ void parser___ReduceAction297___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9593 */
+  /* ./parser//parser.nit:9591 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction297____goto(fra.me.REG[1]) = REGB0;
@@ -32007,7 +31995,7 @@ void parser___ReduceAction298___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9597;
+  fra.me.line = 9595;
   fra.me.meth = LOCATE_parser___ReduceAction298___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32018,37 +32006,37 @@ void parser___ReduceAction298___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9599 */
+  /* ./parser//parser.nit:9597 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9600 */
+  /* ./parser//parser.nit:9598 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9601 */
+  /* ./parser//parser.nit:9599 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9602 */
+  /* ./parser//parser.nit:9600 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9603 */
+  /* ./parser//parser.nit:9601 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9605 */
+  /* ./parser//parser.nit:9603 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9605);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9603);
   }
-  /* ./parser//parser.nit:9607 */
+  /* ./parser//parser.nit:9605 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9607);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9605);
   }
-  /* ./parser//parser.nit:9608 */
+  /* ./parser//parser.nit:9606 */
   fra.me.REG[3] = NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9612 */
+  /* ./parser//parser.nit:9610 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9613 */
+  /* ./parser//parser.nit:9611 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction298____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9613);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9611);
   }
   REGB0 = ATTR_parser___ReduceAction298____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32064,7 +32052,7 @@ void parser___ReduceAction298___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos285]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9616;
+  fra.me.line = 9614;
   fra.me.meth = LOCATE_parser___ReduceAction298___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32072,7 +32060,7 @@ void parser___ReduceAction298___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9616 */
+  /* ./parser//parser.nit:9614 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction298____goto(fra.me.REG[1]) = REGB0;
@@ -32086,7 +32074,7 @@ void parser___ReduceAction299___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9620;
+  fra.me.line = 9618;
   fra.me.meth = LOCATE_parser___ReduceAction299___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32097,39 +32085,39 @@ void parser___ReduceAction299___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9622 */
+  /* ./parser//parser.nit:9620 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9623 */
+  /* ./parser//parser.nit:9621 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9622 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9623 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9624 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9625 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9626 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9627 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9629 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9629);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9627);
   }
-  /* ./parser//parser.nit:9631 */
+  /* ./parser//parser.nit:9629 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9631);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9629);
   }
-  /* ./parser//parser.nit:9632 */
+  /* ./parser//parser.nit:9630 */
   fra.me.REG[3] = NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9636 */
+  /* ./parser//parser.nit:9634 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9637 */
+  /* ./parser//parser.nit:9635 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction299____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9637);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9635);
   }
   REGB0 = ATTR_parser___ReduceAction299____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32145,7 +32133,7 @@ void parser___ReduceAction299___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos286]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9640;
+  fra.me.line = 9638;
   fra.me.meth = LOCATE_parser___ReduceAction299___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32153,7 +32141,7 @@ void parser___ReduceAction299___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9640 */
+  /* ./parser//parser.nit:9638 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction299____goto(fra.me.REG[1]) = REGB0;
@@ -32167,7 +32155,7 @@ void parser___ReduceAction301___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9644;
+  fra.me.line = 9642;
   fra.me.meth = LOCATE_parser___ReduceAction301___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32178,35 +32166,35 @@ void parser___ReduceAction301___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9646 */
+  /* ./parser//parser.nit:9644 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9647 */
+  /* ./parser//parser.nit:9645 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9648 */
+  /* ./parser//parser.nit:9646 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9649 */
+  /* ./parser//parser.nit:9647 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9651 */
+  /* ./parser//parser.nit:9649 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwnot, ID_TKwnot)) /*cast nullable TKwnot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9651);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9649);
   }
-  /* ./parser//parser.nit:9653 */
+  /* ./parser//parser.nit:9651 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9653);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9651);
   }
-  /* ./parser//parser.nit:9654 */
+  /* ./parser//parser.nit:9652 */
   fra.me.REG[3] = NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9658 */
+  /* ./parser//parser.nit:9656 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9659 */
+  /* ./parser//parser.nit:9657 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction301____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9659);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9657);
   }
   REGB0 = ATTR_parser___ReduceAction301____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32222,7 +32210,7 @@ void parser___ReduceAction301___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos287]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9662;
+  fra.me.line = 9660;
   fra.me.meth = LOCATE_parser___ReduceAction301___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32230,7 +32218,7 @@ void parser___ReduceAction301___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9662 */
+  /* ./parser//parser.nit:9660 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction301____goto(fra.me.REG[1]) = REGB0;
@@ -32244,7 +32232,7 @@ void parser___ReduceAction303___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9666;
+  fra.me.line = 9664;
   fra.me.meth = LOCATE_parser___ReduceAction303___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32255,37 +32243,37 @@ void parser___ReduceAction303___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9668 */
+  /* ./parser//parser.nit:9666 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9669 */
+  /* ./parser//parser.nit:9667 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9670 */
+  /* ./parser//parser.nit:9668 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9671 */
+  /* ./parser//parser.nit:9669 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9672 */
+  /* ./parser//parser.nit:9670 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9674 */
+  /* ./parser//parser.nit:9672 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9674);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9672);
   }
-  /* ./parser//parser.nit:9676 */
+  /* ./parser//parser.nit:9674 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9676);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9674);
   }
-  /* ./parser//parser.nit:9677 */
+  /* ./parser//parser.nit:9675 */
   fra.me.REG[3] = NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9681 */
+  /* ./parser//parser.nit:9679 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9682 */
+  /* ./parser//parser.nit:9680 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction303____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9682);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9680);
   }
   REGB0 = ATTR_parser___ReduceAction303____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32301,7 +32289,7 @@ void parser___ReduceAction303___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos288]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9685;
+  fra.me.line = 9683;
   fra.me.meth = LOCATE_parser___ReduceAction303___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32309,7 +32297,7 @@ void parser___ReduceAction303___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9685 */
+  /* ./parser//parser.nit:9683 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction303____goto(fra.me.REG[1]) = REGB0;
@@ -32323,7 +32311,7 @@ void parser___ReduceAction304___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9689;
+  fra.me.line = 9687;
   fra.me.meth = LOCATE_parser___ReduceAction304___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32334,37 +32322,37 @@ void parser___ReduceAction304___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9691 */
+  /* ./parser//parser.nit:9689 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9692 */
+  /* ./parser//parser.nit:9690 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9693 */
+  /* ./parser//parser.nit:9691 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9694 */
+  /* ./parser//parser.nit:9692 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9695 */
+  /* ./parser//parser.nit:9693 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9697 */
+  /* ./parser//parser.nit:9695 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9697);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9695);
   }
-  /* ./parser//parser.nit:9699 */
+  /* ./parser//parser.nit:9697 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9699);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9697);
   }
-  /* ./parser//parser.nit:9700 */
+  /* ./parser//parser.nit:9698 */
   fra.me.REG[3] = NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9704 */
+  /* ./parser//parser.nit:9702 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9705 */
+  /* ./parser//parser.nit:9703 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction304____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9705);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9703);
   }
   REGB0 = ATTR_parser___ReduceAction304____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32380,7 +32368,7 @@ void parser___ReduceAction304___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos289]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9708;
+  fra.me.line = 9706;
   fra.me.meth = LOCATE_parser___ReduceAction304___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32388,7 +32376,7 @@ void parser___ReduceAction304___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9708 */
+  /* ./parser//parser.nit:9706 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction304____goto(fra.me.REG[1]) = REGB0;
@@ -32402,7 +32390,7 @@ void parser___ReduceAction305___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9712;
+  fra.me.line = 9710;
   fra.me.meth = LOCATE_parser___ReduceAction305___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32413,37 +32401,37 @@ void parser___ReduceAction305___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9714 */
+  /* ./parser//parser.nit:9712 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9715 */
+  /* ./parser//parser.nit:9713 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9716 */
+  /* ./parser//parser.nit:9714 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9717 */
+  /* ./parser//parser.nit:9715 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9718 */
+  /* ./parser//parser.nit:9716 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9720 */
+  /* ./parser//parser.nit:9718 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9720);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9718);
   }
-  /* ./parser//parser.nit:9722 */
+  /* ./parser//parser.nit:9720 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9722);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9720);
   }
-  /* ./parser//parser.nit:9723 */
+  /* ./parser//parser.nit:9721 */
   fra.me.REG[3] = NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9727 */
+  /* ./parser//parser.nit:9725 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9728 */
+  /* ./parser//parser.nit:9726 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction305____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9728);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9726);
   }
   REGB0 = ATTR_parser___ReduceAction305____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32459,7 +32447,7 @@ void parser___ReduceAction305___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos290]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9731;
+  fra.me.line = 9729;
   fra.me.meth = LOCATE_parser___ReduceAction305___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32467,7 +32455,7 @@ void parser___ReduceAction305___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9731 */
+  /* ./parser//parser.nit:9729 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction305____goto(fra.me.REG[1]) = REGB0;
@@ -32481,7 +32469,7 @@ void parser___ReduceAction306___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9735;
+  fra.me.line = 9733;
   fra.me.meth = LOCATE_parser___ReduceAction306___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32492,37 +32480,37 @@ void parser___ReduceAction306___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9737 */
+  /* ./parser//parser.nit:9735 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9738 */
+  /* ./parser//parser.nit:9736 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9739 */
+  /* ./parser//parser.nit:9737 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9740 */
+  /* ./parser//parser.nit:9738 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9741 */
+  /* ./parser//parser.nit:9739 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9743 */
+  /* ./parser//parser.nit:9741 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9743);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9741);
   }
-  /* ./parser//parser.nit:9745 */
+  /* ./parser//parser.nit:9743 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9745);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9743);
   }
-  /* ./parser//parser.nit:9746 */
+  /* ./parser//parser.nit:9744 */
   fra.me.REG[3] = NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9750 */
+  /* ./parser//parser.nit:9748 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9751 */
+  /* ./parser//parser.nit:9749 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction306____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9751);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9749);
   }
   REGB0 = ATTR_parser___ReduceAction306____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32538,7 +32526,7 @@ void parser___ReduceAction306___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos291]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9754;
+  fra.me.line = 9752;
   fra.me.meth = LOCATE_parser___ReduceAction306___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32546,7 +32534,7 @@ void parser___ReduceAction306___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9754 */
+  /* ./parser//parser.nit:9752 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction306____goto(fra.me.REG[1]) = REGB0;
@@ -32560,7 +32548,7 @@ void parser___ReduceAction307___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9758;
+  fra.me.line = 9756;
   fra.me.meth = LOCATE_parser___ReduceAction307___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32571,37 +32559,37 @@ void parser___ReduceAction307___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9760 */
+  /* ./parser//parser.nit:9758 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9761 */
+  /* ./parser//parser.nit:9759 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9762 */
+  /* ./parser//parser.nit:9760 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9761 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9763 */
+  /* ./parser//parser.nit:9762 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9764 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9766 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9766);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9764);
   }
-  /* ./parser//parser.nit:9768 */
+  /* ./parser//parser.nit:9766 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9768);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9766);
   }
-  /* ./parser//parser.nit:9769 */
+  /* ./parser//parser.nit:9767 */
   fra.me.REG[3] = NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9773 */
+  /* ./parser//parser.nit:9771 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9774 */
+  /* ./parser//parser.nit:9772 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction307____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9774);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9772);
   }
   REGB0 = ATTR_parser___ReduceAction307____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32617,7 +32605,7 @@ void parser___ReduceAction307___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos292]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9777;
+  fra.me.line = 9775;
   fra.me.meth = LOCATE_parser___ReduceAction307___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32625,7 +32613,7 @@ void parser___ReduceAction307___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9777 */
+  /* ./parser//parser.nit:9775 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction307____goto(fra.me.REG[1]) = REGB0;
@@ -32639,7 +32627,7 @@ void parser___ReduceAction308___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9781;
+  fra.me.line = 9779;
   fra.me.meth = LOCATE_parser___ReduceAction308___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32650,37 +32638,37 @@ void parser___ReduceAction308___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9783 */
+  /* ./parser//parser.nit:9781 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9784 */
+  /* ./parser//parser.nit:9782 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9785 */
+  /* ./parser//parser.nit:9783 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9784 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9786 */
+  /* ./parser//parser.nit:9785 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9787 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9789 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9789);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9787);
   }
-  /* ./parser//parser.nit:9791 */
+  /* ./parser//parser.nit:9789 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9791);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9789);
   }
-  /* ./parser//parser.nit:9792 */
+  /* ./parser//parser.nit:9790 */
   fra.me.REG[3] = NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9796 */
+  /* ./parser//parser.nit:9794 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9797 */
+  /* ./parser//parser.nit:9795 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction308____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9797);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9795);
   }
   REGB0 = ATTR_parser___ReduceAction308____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32696,7 +32684,7 @@ void parser___ReduceAction308___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos293]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9800;
+  fra.me.line = 9798;
   fra.me.meth = LOCATE_parser___ReduceAction308___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32704,7 +32692,7 @@ void parser___ReduceAction308___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9800 */
+  /* ./parser//parser.nit:9798 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction308____goto(fra.me.REG[1]) = REGB0;
@@ -32718,7 +32706,7 @@ void parser___ReduceAction309___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9804;
+  fra.me.line = 9802;
   fra.me.meth = LOCATE_parser___ReduceAction309___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32729,37 +32717,37 @@ void parser___ReduceAction309___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9806 */
+  /* ./parser//parser.nit:9804 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9807 */
+  /* ./parser//parser.nit:9805 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9808 */
+  /* ./parser//parser.nit:9806 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9807 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9809 */
+  /* ./parser//parser.nit:9808 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9810 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9812 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9812);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9810);
   }
-  /* ./parser//parser.nit:9814 */
+  /* ./parser//parser.nit:9812 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9814);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9812);
   }
-  /* ./parser//parser.nit:9815 */
+  /* ./parser//parser.nit:9813 */
   fra.me.REG[3] = NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9819 */
+  /* ./parser//parser.nit:9817 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9820 */
+  /* ./parser//parser.nit:9818 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction309____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9820);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9818);
   }
   REGB0 = ATTR_parser___ReduceAction309____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32775,7 +32763,7 @@ void parser___ReduceAction309___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos294]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9823;
+  fra.me.line = 9821;
   fra.me.meth = LOCATE_parser___ReduceAction309___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32783,7 +32771,7 @@ void parser___ReduceAction309___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9823 */
+  /* ./parser//parser.nit:9821 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction309____goto(fra.me.REG[1]) = REGB0;
@@ -32797,7 +32785,7 @@ void parser___ReduceAction310___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9827;
+  fra.me.line = 9825;
   fra.me.meth = LOCATE_parser___ReduceAction310___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32808,37 +32796,37 @@ void parser___ReduceAction310___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9829 */
+  /* ./parser//parser.nit:9827 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9830 */
+  /* ./parser//parser.nit:9828 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9831 */
+  /* ./parser//parser.nit:9829 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9832 */
+  /* ./parser//parser.nit:9830 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9833 */
+  /* ./parser//parser.nit:9831 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9835 */
+  /* ./parser//parser.nit:9833 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9835);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9833);
   }
-  /* ./parser//parser.nit:9837 */
+  /* ./parser//parser.nit:9835 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9837);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9835);
   }
-  /* ./parser//parser.nit:9838 */
+  /* ./parser//parser.nit:9836 */
   fra.me.REG[3] = NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9842 */
+  /* ./parser//parser.nit:9840 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9843 */
+  /* ./parser//parser.nit:9841 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction310____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9843);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9841);
   }
   REGB0 = ATTR_parser___ReduceAction310____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32854,7 +32842,7 @@ void parser___ReduceAction310___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos295]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9846;
+  fra.me.line = 9844;
   fra.me.meth = LOCATE_parser___ReduceAction310___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32862,7 +32850,7 @@ void parser___ReduceAction310___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9846 */
+  /* ./parser//parser.nit:9844 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction310____goto(fra.me.REG[1]) = REGB0;
@@ -32876,7 +32864,7 @@ void parser___ReduceAction311___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9850;
+  fra.me.line = 9848;
   fra.me.meth = LOCATE_parser___ReduceAction311___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32887,37 +32875,37 @@ void parser___ReduceAction311___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9852 */
+  /* ./parser//parser.nit:9850 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9853 */
+  /* ./parser//parser.nit:9851 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9854 */
+  /* ./parser//parser.nit:9852 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9853 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9855 */
+  /* ./parser//parser.nit:9854 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9856 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9858 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9858);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9856);
   }
-  /* ./parser//parser.nit:9860 */
+  /* ./parser//parser.nit:9858 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9860);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9858);
   }
-  /* ./parser//parser.nit:9861 */
+  /* ./parser//parser.nit:9859 */
   fra.me.REG[3] = NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9865 */
+  /* ./parser//parser.nit:9863 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9866 */
+  /* ./parser//parser.nit:9864 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction311____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9866);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9864);
   }
   REGB0 = ATTR_parser___ReduceAction311____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -32933,7 +32921,7 @@ void parser___ReduceAction311___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos296]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9869;
+  fra.me.line = 9867;
   fra.me.meth = LOCATE_parser___ReduceAction311___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -32941,7 +32929,7 @@ void parser___ReduceAction311___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9869 */
+  /* ./parser//parser.nit:9867 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction311____goto(fra.me.REG[1]) = REGB0;
@@ -32955,7 +32943,7 @@ void parser___ReduceAction312___action(val_t p0, val_t p1){
   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.line = 9871;
   fra.me.meth = LOCATE_parser___ReduceAction312___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -32966,37 +32954,37 @@ void parser___ReduceAction312___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9875 */
+  /* ./parser//parser.nit:9873 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9876 */
+  /* ./parser//parser.nit:9874 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9877 */
+  /* ./parser//parser.nit:9875 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9876 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9878 */
+  /* ./parser//parser.nit:9877 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9879 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9881 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9881);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9879);
   }
-  /* ./parser//parser.nit:9883 */
+  /* ./parser//parser.nit:9881 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9883);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9881);
   }
-  /* ./parser//parser.nit:9884 */
+  /* ./parser//parser.nit:9882 */
   fra.me.REG[3] = NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9888 */
+  /* ./parser//parser.nit:9886 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9889 */
+  /* ./parser//parser.nit:9887 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction312____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9889);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9887);
   }
   REGB0 = ATTR_parser___ReduceAction312____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33012,7 +33000,7 @@ void parser___ReduceAction312___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos297]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9892;
+  fra.me.line = 9890;
   fra.me.meth = LOCATE_parser___ReduceAction312___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33020,7 +33008,7 @@ void parser___ReduceAction312___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9892 */
+  /* ./parser//parser.nit:9890 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction312____goto(fra.me.REG[1]) = REGB0;
@@ -33034,7 +33022,7 @@ void parser___ReduceAction313___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9896;
+  fra.me.line = 9894;
   fra.me.meth = LOCATE_parser___ReduceAction313___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33045,37 +33033,37 @@ void parser___ReduceAction313___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9898 */
+  /* ./parser//parser.nit:9896 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9899 */
+  /* ./parser//parser.nit:9897 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9900 */
+  /* ./parser//parser.nit:9898 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9899 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9901 */
+  /* ./parser//parser.nit:9900 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9902 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9904 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9904);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9902);
   }
-  /* ./parser//parser.nit:9906 */
+  /* ./parser//parser.nit:9904 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9906);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9904);
   }
-  /* ./parser//parser.nit:9907 */
+  /* ./parser//parser.nit:9905 */
   fra.me.REG[3] = NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9911 */
+  /* ./parser//parser.nit:9909 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9912 */
+  /* ./parser//parser.nit:9910 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction313____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9912);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9910);
   }
   REGB0 = ATTR_parser___ReduceAction313____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33091,7 +33079,7 @@ void parser___ReduceAction313___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos298]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9915;
+  fra.me.line = 9913;
   fra.me.meth = LOCATE_parser___ReduceAction313___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33099,7 +33087,7 @@ void parser___ReduceAction313___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9915 */
+  /* ./parser//parser.nit:9913 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction313____goto(fra.me.REG[1]) = REGB0;
@@ -33113,7 +33101,7 @@ void parser___ReduceAction315___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9919;
+  fra.me.line = 9917;
   fra.me.meth = LOCATE_parser___ReduceAction315___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33124,37 +33112,37 @@ void parser___ReduceAction315___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9921 */
+  /* ./parser//parser.nit:9919 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9922 */
+  /* ./parser//parser.nit:9920 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9923 */
+  /* ./parser//parser.nit:9921 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9922 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9924 */
+  /* ./parser//parser.nit:9923 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9925 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9927 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9927);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9925);
   }
-  /* ./parser//parser.nit:9929 */
+  /* ./parser//parser.nit:9927 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9929);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9927);
   }
-  /* ./parser//parser.nit:9930 */
+  /* ./parser//parser.nit:9928 */
   fra.me.REG[3] = NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9934 */
+  /* ./parser//parser.nit:9932 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9935 */
+  /* ./parser//parser.nit:9933 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction315____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9935);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9933);
   }
   REGB0 = ATTR_parser___ReduceAction315____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33170,7 +33158,7 @@ void parser___ReduceAction315___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos299]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9938;
+  fra.me.line = 9936;
   fra.me.meth = LOCATE_parser___ReduceAction315___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33178,7 +33166,7 @@ void parser___ReduceAction315___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9938 */
+  /* ./parser//parser.nit:9936 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction315____goto(fra.me.REG[1]) = REGB0;
@@ -33192,7 +33180,7 @@ void parser___ReduceAction316___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9942;
+  fra.me.line = 9940;
   fra.me.meth = LOCATE_parser___ReduceAction316___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33203,37 +33191,37 @@ void parser___ReduceAction316___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9944 */
+  /* ./parser//parser.nit:9942 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9945 */
+  /* ./parser//parser.nit:9943 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9946 */
+  /* ./parser//parser.nit:9944 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:9945 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9947 */
+  /* ./parser//parser.nit:9946 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:9948 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9950 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9950);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9948);
   }
-  /* ./parser//parser.nit:9952 */
+  /* ./parser//parser.nit:9950 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9952);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9950);
   }
-  /* ./parser//parser.nit:9953 */
+  /* ./parser//parser.nit:9951 */
   fra.me.REG[3] = NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9957 */
+  /* ./parser//parser.nit:9955 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9958 */
+  /* ./parser//parser.nit:9956 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction316____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9958);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9956);
   }
   REGB0 = ATTR_parser___ReduceAction316____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33249,7 +33237,7 @@ void parser___ReduceAction316___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos300]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9961;
+  fra.me.line = 9959;
   fra.me.meth = LOCATE_parser___ReduceAction316___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33257,7 +33245,7 @@ void parser___ReduceAction316___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9961 */
+  /* ./parser//parser.nit:9959 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction316____goto(fra.me.REG[1]) = REGB0;
@@ -33271,7 +33259,7 @@ void parser___ReduceAction318___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9965;
+  fra.me.line = 9963;
   fra.me.meth = LOCATE_parser___ReduceAction318___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33282,37 +33270,37 @@ void parser___ReduceAction318___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9967 */
+  /* ./parser//parser.nit:9965 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9968 */
+  /* ./parser//parser.nit:9966 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9969 */
+  /* ./parser//parser.nit:9967 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9970 */
+  /* ./parser//parser.nit:9968 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9971 */
+  /* ./parser//parser.nit:9969 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9973 */
+  /* ./parser//parser.nit:9971 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9973);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9971);
   }
-  /* ./parser//parser.nit:9975 */
+  /* ./parser//parser.nit:9973 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9975);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9973);
   }
-  /* ./parser//parser.nit:9976 */
+  /* ./parser//parser.nit:9974 */
   fra.me.REG[3] = NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:9980 */
+  /* ./parser//parser.nit:9978 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:9981 */
+  /* ./parser//parser.nit:9979 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction318____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9981);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 9979);
   }
   REGB0 = ATTR_parser___ReduceAction318____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33328,7 +33316,7 @@ void parser___ReduceAction318___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos301]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9984;
+  fra.me.line = 9982;
   fra.me.meth = LOCATE_parser___ReduceAction318___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33336,7 +33324,7 @@ void parser___ReduceAction318___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:9984 */
+  /* ./parser//parser.nit:9982 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction318____goto(fra.me.REG[1]) = REGB0;
@@ -33350,7 +33338,7 @@ void parser___ReduceAction319___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 9988;
+  fra.me.line = 9986;
   fra.me.meth = LOCATE_parser___ReduceAction319___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33361,37 +33349,37 @@ void parser___ReduceAction319___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:9990 */
+  /* ./parser//parser.nit:9988 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:9991 */
+  /* ./parser//parser.nit:9989 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9992 */
+  /* ./parser//parser.nit:9990 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9993 */
+  /* ./parser//parser.nit:9991 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9994 */
+  /* ./parser//parser.nit:9992 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:9996 */
+  /* ./parser//parser.nit:9994 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9996);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9994);
   }
-  /* ./parser//parser.nit:9998 */
+  /* ./parser//parser.nit:9996 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 9998);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 9996);
   }
-  /* ./parser//parser.nit:9999 */
+  /* ./parser//parser.nit:9997 */
   fra.me.REG[3] = NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10003 */
+  /* ./parser//parser.nit:10001 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10004 */
+  /* ./parser//parser.nit:10002 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction319____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10004);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10002);
   }
   REGB0 = ATTR_parser___ReduceAction319____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33407,7 +33395,7 @@ void parser___ReduceAction319___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos302]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10007;
+  fra.me.line = 10005;
   fra.me.meth = LOCATE_parser___ReduceAction319___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33415,7 +33403,7 @@ void parser___ReduceAction319___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10007 */
+  /* ./parser//parser.nit:10005 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction319____goto(fra.me.REG[1]) = REGB0;
@@ -33429,7 +33417,7 @@ void parser___ReduceAction320___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10011;
+  fra.me.line = 10009;
   fra.me.meth = LOCATE_parser___ReduceAction320___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33440,37 +33428,37 @@ void parser___ReduceAction320___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10013 */
+  /* ./parser//parser.nit:10011 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10014 */
+  /* ./parser//parser.nit:10012 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10015 */
+  /* ./parser//parser.nit:10013 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10016 */
+  /* ./parser//parser.nit:10014 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10017 */
+  /* ./parser//parser.nit:10015 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10019 */
+  /* ./parser//parser.nit:10017 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10019);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10017);
   }
-  /* ./parser//parser.nit:10021 */
+  /* ./parser//parser.nit:10019 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10021);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10019);
   }
-  /* ./parser//parser.nit:10022 */
+  /* ./parser//parser.nit:10020 */
   fra.me.REG[3] = NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10026 */
+  /* ./parser//parser.nit:10024 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10027 */
+  /* ./parser//parser.nit:10025 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction320____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10027);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10025);
   }
   REGB0 = ATTR_parser___ReduceAction320____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33486,7 +33474,7 @@ void parser___ReduceAction320___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos303]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10030;
+  fra.me.line = 10028;
   fra.me.meth = LOCATE_parser___ReduceAction320___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33494,7 +33482,7 @@ void parser___ReduceAction320___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10030 */
+  /* ./parser//parser.nit:10028 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction320____goto(fra.me.REG[1]) = REGB0;
@@ -33508,7 +33496,7 @@ void parser___ReduceAction322___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10034;
+  fra.me.line = 10032;
   fra.me.meth = LOCATE_parser___ReduceAction322___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33519,35 +33507,35 @@ void parser___ReduceAction322___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10036 */
+  /* ./parser//parser.nit:10034 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10037 */
+  /* ./parser//parser.nit:10035 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10038 */
+  /* ./parser//parser.nit:10036 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10039 */
+  /* ./parser//parser.nit:10037 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10041 */
+  /* ./parser//parser.nit:10039 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TMinus, ID_TMinus)) /*cast nullable TMinus*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10041);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10039);
   }
-  /* ./parser//parser.nit:10043 */
+  /* ./parser//parser.nit:10041 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10043);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10041);
   }
-  /* ./parser//parser.nit:10044 */
+  /* ./parser//parser.nit:10042 */
   fra.me.REG[3] = NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10048 */
+  /* ./parser//parser.nit:10046 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10049 */
+  /* ./parser//parser.nit:10047 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction322____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10049);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10047);
   }
   REGB0 = ATTR_parser___ReduceAction322____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33563,7 +33551,7 @@ void parser___ReduceAction322___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos304]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10052;
+  fra.me.line = 10050;
   fra.me.meth = LOCATE_parser___ReduceAction322___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33571,7 +33559,7 @@ void parser___ReduceAction322___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10052 */
+  /* ./parser//parser.nit:10050 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction322____goto(fra.me.REG[1]) = REGB0;
@@ -33585,7 +33573,7 @@ void parser___ReduceAction323___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10056;
+  fra.me.line = 10054;
   fra.me.meth = LOCATE_parser___ReduceAction323___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33596,35 +33584,35 @@ void parser___ReduceAction323___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10058 */
+  /* ./parser//parser.nit:10056 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10059 */
+  /* ./parser//parser.nit:10057 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10060 */
+  /* ./parser//parser.nit:10058 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10061 */
+  /* ./parser//parser.nit:10059 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10063 */
+  /* ./parser//parser.nit:10061 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwonce, ID_TKwonce)) /*cast nullable TKwonce*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10063);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10061);
   }
-  /* ./parser//parser.nit:10065 */
+  /* ./parser//parser.nit:10063 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10065);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10063);
   }
-  /* ./parser//parser.nit:10066 */
+  /* ./parser//parser.nit:10064 */
   fra.me.REG[3] = NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10070 */
+  /* ./parser//parser.nit:10068 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10071 */
+  /* ./parser//parser.nit:10069 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction323____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10071);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10069);
   }
   REGB0 = ATTR_parser___ReduceAction323____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33640,7 +33628,7 @@ void parser___ReduceAction323___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos305]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10074;
+  fra.me.line = 10072;
   fra.me.meth = LOCATE_parser___ReduceAction323___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33648,7 +33636,7 @@ void parser___ReduceAction323___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10074 */
+  /* ./parser//parser.nit:10072 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction323____goto(fra.me.REG[1]) = REGB0;
@@ -33662,7 +33650,7 @@ void parser___ReduceAction325___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10078;
+  fra.me.line = 10076;
   fra.me.meth = LOCATE_parser___ReduceAction325___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -33675,48 +33663,48 @@ void parser___ReduceAction325___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10080 */
+  /* ./parser//parser.nit:10078 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10081 */
+  /* ./parser//parser.nit:10079 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10082 */
+  /* ./parser//parser.nit:10080 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10083 */
+  /* ./parser//parser.nit:10081 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10084 */
+  /* ./parser//parser.nit:10082 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10085 */
+  /* ./parser//parser.nit:10083 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10087 */
+  /* ./parser//parser.nit:10085 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwnew, ID_TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10087);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10085);
   }
-  /* ./parser//parser.nit:10089 */
+  /* ./parser//parser.nit:10087 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10089);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10087);
   }
-  /* ./parser//parser.nit:10091 */
+  /* ./parser//parser.nit:10089 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10091);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10089);
   }
-  /* ./parser//parser.nit:10092 */
+  /* ./parser//parser.nit:10090 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:10093 */
+  /* ./parser//parser.nit:10091 */
   fra.me.REG[6] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(fra.me.REG[5], fra.me.REG[4], NIT_NULL, fra.me.REG[6]);
-  /* ./parser//parser.nit:10099 */
+  /* ./parser//parser.nit:10097 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:10100 */
+  /* ./parser//parser.nit:10098 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction325____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10100);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10098);
   }
   REGB0 = ATTR_parser___ReduceAction325____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33732,7 +33720,7 @@ void parser___ReduceAction325___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos306]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10103;
+  fra.me.line = 10101;
   fra.me.meth = LOCATE_parser___ReduceAction325___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33740,7 +33728,7 @@ void parser___ReduceAction325___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10103 */
+  /* ./parser//parser.nit:10101 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction325____goto(fra.me.REG[1]) = REGB0;
@@ -33754,7 +33742,7 @@ void parser___ReduceAction326___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10107;
+  fra.me.line = 10105;
   fra.me.meth = LOCATE_parser___ReduceAction326___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -33766,45 +33754,45 @@ void parser___ReduceAction326___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10109 */
+  /* ./parser//parser.nit:10107 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10110 */
+  /* ./parser//parser.nit:10108 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10111 */
+  /* ./parser//parser.nit:10109 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10112 */
+  /* ./parser//parser.nit:10110 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10113 */
+  /* ./parser//parser.nit:10111 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10114 */
+  /* ./parser//parser.nit:10112 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10116 */
+  /* ./parser//parser.nit:10114 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwisset, ID_TKwisset)) /*cast nullable TKwisset*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10116);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10114);
   }
-  /* ./parser//parser.nit:10118 */
+  /* ./parser//parser.nit:10116 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10118);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10116);
   }
-  /* ./parser//parser.nit:10120 */
+  /* ./parser//parser.nit:10118 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10120);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10118);
   }
-  /* ./parser//parser.nit:10121 */
+  /* ./parser//parser.nit:10119 */
   fra.me.REG[3] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10126 */
+  /* ./parser//parser.nit:10124 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10127 */
+  /* ./parser//parser.nit:10125 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction326____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10127);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10125);
   }
   REGB0 = ATTR_parser___ReduceAction326____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33820,7 +33808,7 @@ void parser___ReduceAction326___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos307]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10130;
+  fra.me.line = 10128;
   fra.me.meth = LOCATE_parser___ReduceAction326___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33828,7 +33816,7 @@ void parser___ReduceAction326___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10130 */
+  /* ./parser//parser.nit:10128 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction326____goto(fra.me.REG[1]) = REGB0;
@@ -33842,7 +33830,7 @@ void parser___ReduceAction327___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10134;
+  fra.me.line = 10132;
   fra.me.meth = LOCATE_parser___ReduceAction327___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -33854,35 +33842,35 @@ void parser___ReduceAction327___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10136 */
+  /* ./parser//parser.nit:10134 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10137 */
+  /* ./parser//parser.nit:10135 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10138 */
+  /* ./parser//parser.nit:10136 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10140 */
+  /* ./parser//parser.nit:10138 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwisset, ID_TKwisset)) /*cast nullable TKwisset*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10140);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10138);
   }
-  /* ./parser//parser.nit:10141 */
+  /* ./parser//parser.nit:10139 */
   fra.me.REG[5] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:10144 */
+  /* ./parser//parser.nit:10142 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10144);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10142);
   }
-  /* ./parser//parser.nit:10145 */
+  /* ./parser//parser.nit:10143 */
   fra.me.REG[3] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
-  /* ./parser//parser.nit:10150 */
+  /* ./parser//parser.nit:10148 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10151 */
+  /* ./parser//parser.nit:10149 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction327____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10151);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10149);
   }
   REGB0 = ATTR_parser___ReduceAction327____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33898,7 +33886,7 @@ void parser___ReduceAction327___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos308]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10154;
+  fra.me.line = 10152;
   fra.me.meth = LOCATE_parser___ReduceAction327___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33906,7 +33894,7 @@ void parser___ReduceAction327___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10154 */
+  /* ./parser//parser.nit:10152 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction327____goto(fra.me.REG[1]) = REGB0;
@@ -33920,7 +33908,7 @@ void parser___ReduceAction328___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10158;
+  fra.me.line = 10156;
   fra.me.meth = LOCATE_parser___ReduceAction328___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -33931,37 +33919,37 @@ void parser___ReduceAction328___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10160 */
+  /* ./parser//parser.nit:10158 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10161 */
+  /* ./parser//parser.nit:10159 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10162 */
+  /* ./parser//parser.nit:10160 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10163 */
+  /* ./parser//parser.nit:10161 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10164 */
+  /* ./parser//parser.nit:10162 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10166 */
+  /* ./parser//parser.nit:10164 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10166);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10164);
   }
-  /* ./parser//parser.nit:10168 */
+  /* ./parser//parser.nit:10166 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10168);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10166);
   }
-  /* ./parser//parser.nit:10169 */
+  /* ./parser//parser.nit:10167 */
   fra.me.REG[3] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10173 */
+  /* ./parser//parser.nit:10171 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10174 */
+  /* ./parser//parser.nit:10172 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction328____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10174);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10172);
   }
   REGB0 = ATTR_parser___ReduceAction328____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -33977,7 +33965,7 @@ void parser___ReduceAction328___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos309]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10177;
+  fra.me.line = 10175;
   fra.me.meth = LOCATE_parser___ReduceAction328___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -33985,7 +33973,7 @@ void parser___ReduceAction328___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10177 */
+  /* ./parser//parser.nit:10175 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction328____goto(fra.me.REG[1]) = REGB0;
@@ -33999,7 +33987,7 @@ void parser___ReduceAction329___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10181;
+  fra.me.line = 10179;
   fra.me.meth = LOCATE_parser___ReduceAction329___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -34010,27 +33998,27 @@ void parser___ReduceAction329___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10183 */
+  /* ./parser//parser.nit:10181 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10184 */
+  /* ./parser//parser.nit:10182 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10185 */
+  /* ./parser//parser.nit:10183 */
   fra.me.REG[4] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:10188 */
+  /* ./parser//parser.nit:10186 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10188);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10186);
   }
-  /* ./parser//parser.nit:10189 */
+  /* ./parser//parser.nit:10187 */
   fra.me.REG[3] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10193 */
+  /* ./parser//parser.nit:10191 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10194 */
+  /* ./parser//parser.nit:10192 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction329____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10194);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10192);
   }
   REGB0 = ATTR_parser___ReduceAction329____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34046,7 +34034,7 @@ void parser___ReduceAction329___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos310]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10197;
+  fra.me.line = 10195;
   fra.me.meth = LOCATE_parser___ReduceAction329___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34054,7 +34042,7 @@ void parser___ReduceAction329___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10197 */
+  /* ./parser//parser.nit:10195 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction329____goto(fra.me.REG[1]) = REGB0;
@@ -34068,7 +34056,7 @@ void parser___ReduceAction336___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10201;
+  fra.me.line = 10199;
   fra.me.meth = LOCATE_parser___ReduceAction336___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -34081,40 +34069,40 @@ void parser___ReduceAction336___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10203 */
+  /* ./parser//parser.nit:10201 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10204 */
+  /* ./parser//parser.nit:10202 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10205 */
+  /* ./parser//parser.nit:10203 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10206 */
+  /* ./parser//parser.nit:10204 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10207 */
+  /* ./parser//parser.nit:10205 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10209 */
+  /* ./parser//parser.nit:10207 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10209);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10207);
   }
-  /* ./parser//parser.nit:10211 */
+  /* ./parser//parser.nit:10209 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10211);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10209);
   }
-  /* ./parser//parser.nit:10212 */
+  /* ./parser//parser.nit:10210 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:10213 */
+  /* ./parser//parser.nit:10211 */
   fra.me.REG[6] = NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-  /* ./parser//parser.nit:10218 */
+  /* ./parser//parser.nit:10216 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:10219 */
+  /* ./parser//parser.nit:10217 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction336____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10219);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10217);
   }
   REGB0 = ATTR_parser___ReduceAction336____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34130,7 +34118,7 @@ void parser___ReduceAction336___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos311]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10222;
+  fra.me.line = 10220;
   fra.me.meth = LOCATE_parser___ReduceAction336___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34138,7 +34126,7 @@ void parser___ReduceAction336___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10222 */
+  /* ./parser//parser.nit:10220 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction336____goto(fra.me.REG[1]) = REGB0;
@@ -34152,7 +34140,7 @@ void parser___ReduceAction337___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10226;
+  fra.me.line = 10224;
   fra.me.meth = LOCATE_parser___ReduceAction337___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -34166,60 +34154,60 @@ void parser___ReduceAction337___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10228 */
+  /* ./parser//parser.nit:10226 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10229 */
+  /* ./parser//parser.nit:10227 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10230 */
+  /* ./parser//parser.nit:10228 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10231 */
+  /* ./parser//parser.nit:10229 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10232 */
+  /* ./parser//parser.nit:10230 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10233 */
+  /* ./parser//parser.nit:10231 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10234 */
+  /* ./parser//parser.nit:10232 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10235 */
+  /* ./parser//parser.nit:10233 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10236 */
+  /* ./parser//parser.nit:10234 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10238 */
+  /* ./parser//parser.nit:10236 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_TKwnew, ID_TKwnew)) /*cast nullable TKwnew*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10238);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10236);
   }
-  /* ./parser//parser.nit:10240 */
+  /* ./parser//parser.nit:10238 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10240);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10238);
   }
-  /* ./parser//parser.nit:10242 */
+  /* ./parser//parser.nit:10240 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10242);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10240);
   }
-  /* ./parser//parser.nit:10244 */
+  /* ./parser//parser.nit:10242 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10244);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10242);
   }
-  /* ./parser//parser.nit:10245 */
+  /* ./parser//parser.nit:10243 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
   fra.me.REG[7] = fra.me.REG[3];
-  /* ./parser//parser.nit:10246 */
+  /* ./parser//parser.nit:10244 */
   fra.me.REG[7] = NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[7]);
-  /* ./parser//parser.nit:10252 */
+  /* ./parser//parser.nit:10250 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:10253 */
+  /* ./parser//parser.nit:10251 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction337____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10253);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10251);
   }
   REGB0 = ATTR_parser___ReduceAction337____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34235,7 +34223,7 @@ void parser___ReduceAction337___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos312]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10256;
+  fra.me.line = 10254;
   fra.me.meth = LOCATE_parser___ReduceAction337___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34243,7 +34231,7 @@ void parser___ReduceAction337___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10256 */
+  /* ./parser//parser.nit:10254 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction337____goto(fra.me.REG[1]) = REGB0;
@@ -34257,7 +34245,7 @@ void parser___ReduceAction338___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10260;
+  fra.me.line = 10258;
   fra.me.meth = LOCATE_parser___ReduceAction338___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -34269,47 +34257,47 @@ void parser___ReduceAction338___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10262 */
+  /* ./parser//parser.nit:10260 */
   fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10261 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10262 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10263 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10264 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10265 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10266 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10267 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10268 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10269 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10270 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10271 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10273 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10273);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10271);
   }
-  /* ./parser//parser.nit:10275 */
+  /* ./parser//parser.nit:10273 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10275);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10273);
   }
-  /* ./parser//parser.nit:10276 */
+  /* ./parser//parser.nit:10274 */
   fra.me.REG[3] = NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10280 */
+  /* ./parser//parser.nit:10278 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10281 */
+  /* ./parser//parser.nit:10279 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction338____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10281);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10279);
   }
   REGB0 = ATTR_parser___ReduceAction338____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34325,7 +34313,7 @@ void parser___ReduceAction338___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos313]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10284;
+  fra.me.line = 10282;
   fra.me.meth = LOCATE_parser___ReduceAction338___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34333,7 +34321,7 @@ void parser___ReduceAction338___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10284 */
+  /* ./parser//parser.nit:10282 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction338____goto(fra.me.REG[1]) = REGB0;
@@ -34347,7 +34335,7 @@ void parser___ReduceAction339___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10288;
+  fra.me.line = 10286;
   fra.me.meth = LOCATE_parser___ReduceAction339___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -34359,47 +34347,47 @@ void parser___ReduceAction339___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10290 */
+  /* ./parser//parser.nit:10288 */
   fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10289 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10290 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10291 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10292 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10293 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10294 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10295 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10296 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10297 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10298 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10299 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10301 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10301);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10299);
   }
-  /* ./parser//parser.nit:10303 */
+  /* ./parser//parser.nit:10301 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10303);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10301);
   }
-  /* ./parser//parser.nit:10304 */
+  /* ./parser//parser.nit:10302 */
   fra.me.REG[3] = NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10308 */
+  /* ./parser//parser.nit:10306 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10309 */
+  /* ./parser//parser.nit:10307 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction339____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10309);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10307);
   }
   REGB0 = ATTR_parser___ReduceAction339____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34415,7 +34403,7 @@ void parser___ReduceAction339___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos314]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10312;
+  fra.me.line = 10310;
   fra.me.meth = LOCATE_parser___ReduceAction339___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34423,7 +34411,7 @@ void parser___ReduceAction339___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10312 */
+  /* ./parser//parser.nit:10310 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction339____goto(fra.me.REG[1]) = REGB0;
@@ -34437,7 +34425,7 @@ void parser___ReduceAction340___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10316;
+  fra.me.line = 10314;
   fra.me.meth = LOCATE_parser___ReduceAction340___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -34448,30 +34436,30 @@ void parser___ReduceAction340___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10318 */
+  /* ./parser//parser.nit:10316 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10319 */
+  /* ./parser//parser.nit:10317 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10320 */
+  /* ./parser//parser.nit:10318 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10322 */
+  /* ./parser//parser.nit:10320 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10322);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10320);
   }
-  /* ./parser//parser.nit:10323 */
+  /* ./parser//parser.nit:10321 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:10324 */
+  /* ./parser//parser.nit:10322 */
   fra.me.REG[4] = NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[4]);
-  /* ./parser//parser.nit:10327 */
+  /* ./parser//parser.nit:10325 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10328 */
+  /* ./parser//parser.nit:10326 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction340____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10328);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10326);
   }
   REGB0 = ATTR_parser___ReduceAction340____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34487,7 +34475,7 @@ void parser___ReduceAction340___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos315]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10331;
+  fra.me.line = 10329;
   fra.me.meth = LOCATE_parser___ReduceAction340___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34495,7 +34483,7 @@ void parser___ReduceAction340___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10331 */
+  /* ./parser//parser.nit:10329 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction340____goto(fra.me.REG[1]) = REGB0;
@@ -34509,7 +34497,7 @@ void parser___ReduceAction341___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10335;
+  fra.me.line = 10333;
   fra.me.meth = LOCATE_parser___ReduceAction341___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34519,25 +34507,25 @@ void parser___ReduceAction341___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10337 */
+  /* ./parser//parser.nit:10335 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10338 */
+  /* ./parser//parser.nit:10336 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10340 */
+  /* ./parser//parser.nit:10338 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwself, ID_TKwself)) /*cast nullable TKwself*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10340);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10338);
   }
-  /* ./parser//parser.nit:10341 */
+  /* ./parser//parser.nit:10339 */
   fra.me.REG[3] = NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10344 */
+  /* ./parser//parser.nit:10342 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10345 */
+  /* ./parser//parser.nit:10343 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction341____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10345);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10343);
   }
   REGB0 = ATTR_parser___ReduceAction341____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34553,7 +34541,7 @@ void parser___ReduceAction341___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos316]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10348;
+  fra.me.line = 10346;
   fra.me.meth = LOCATE_parser___ReduceAction341___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34561,7 +34549,7 @@ void parser___ReduceAction341___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10348 */
+  /* ./parser//parser.nit:10346 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction341____goto(fra.me.REG[1]) = REGB0;
@@ -34575,7 +34563,7 @@ void parser___ReduceAction342___action(val_t p0, val_t p1){
   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.line = 10350;
   fra.me.meth = LOCATE_parser___ReduceAction342___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34585,25 +34573,25 @@ void parser___ReduceAction342___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10354 */
+  /* ./parser//parser.nit:10352 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10355 */
+  /* ./parser//parser.nit:10353 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10357 */
+  /* ./parser//parser.nit:10355 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwtrue, ID_TKwtrue)) /*cast nullable TKwtrue*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10357);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10355);
   }
-  /* ./parser//parser.nit:10358 */
+  /* ./parser//parser.nit:10356 */
   fra.me.REG[3] = NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10361 */
+  /* ./parser//parser.nit:10359 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10362 */
+  /* ./parser//parser.nit:10360 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction342____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10362);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10360);
   }
   REGB0 = ATTR_parser___ReduceAction342____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34619,7 +34607,7 @@ void parser___ReduceAction342___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos317]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10365;
+  fra.me.line = 10363;
   fra.me.meth = LOCATE_parser___ReduceAction342___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34627,7 +34615,7 @@ void parser___ReduceAction342___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10365 */
+  /* ./parser//parser.nit:10363 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction342____goto(fra.me.REG[1]) = REGB0;
@@ -34641,7 +34629,7 @@ void parser___ReduceAction343___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10369;
+  fra.me.line = 10367;
   fra.me.meth = LOCATE_parser___ReduceAction343___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34651,25 +34639,25 @@ void parser___ReduceAction343___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10371 */
+  /* ./parser//parser.nit:10369 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10372 */
+  /* ./parser//parser.nit:10370 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10374 */
+  /* ./parser//parser.nit:10372 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwfalse, ID_TKwfalse)) /*cast nullable TKwfalse*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10374);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10372);
   }
-  /* ./parser//parser.nit:10375 */
+  /* ./parser//parser.nit:10373 */
   fra.me.REG[3] = NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10378 */
+  /* ./parser//parser.nit:10376 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10379 */
+  /* ./parser//parser.nit:10377 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction343____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10379);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10377);
   }
   REGB0 = ATTR_parser___ReduceAction343____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34685,7 +34673,7 @@ void parser___ReduceAction343___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos318]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10382;
+  fra.me.line = 10380;
   fra.me.meth = LOCATE_parser___ReduceAction343___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34693,7 +34681,7 @@ void parser___ReduceAction343___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10382 */
+  /* ./parser//parser.nit:10380 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction343____goto(fra.me.REG[1]) = REGB0;
@@ -34707,7 +34695,7 @@ void parser___ReduceAction344___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10386;
+  fra.me.line = 10384;
   fra.me.meth = LOCATE_parser___ReduceAction344___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34717,25 +34705,25 @@ void parser___ReduceAction344___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10388 */
+  /* ./parser//parser.nit:10386 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10389 */
+  /* ./parser//parser.nit:10387 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10391 */
+  /* ./parser//parser.nit:10389 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwnull, ID_TKwnull)) /*cast nullable TKwnull*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10391);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10389);
   }
-  /* ./parser//parser.nit:10392 */
+  /* ./parser//parser.nit:10390 */
   fra.me.REG[3] = NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10395 */
+  /* ./parser//parser.nit:10393 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10396 */
+  /* ./parser//parser.nit:10394 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction344____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10396);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10394);
   }
   REGB0 = ATTR_parser___ReduceAction344____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34751,7 +34739,7 @@ void parser___ReduceAction344___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos319]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10399;
+  fra.me.line = 10397;
   fra.me.meth = LOCATE_parser___ReduceAction344___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34759,7 +34747,7 @@ void parser___ReduceAction344___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10399 */
+  /* ./parser//parser.nit:10397 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction344____goto(fra.me.REG[1]) = REGB0;
@@ -34773,7 +34761,7 @@ void parser___ReduceAction345___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10403;
+  fra.me.line = 10401;
   fra.me.meth = LOCATE_parser___ReduceAction345___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34783,25 +34771,25 @@ void parser___ReduceAction345___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10405 */
+  /* ./parser//parser.nit:10403 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10406 */
+  /* ./parser//parser.nit:10404 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10408 */
+  /* ./parser//parser.nit:10406 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TNumber, ID_TNumber)) /*cast nullable TNumber*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10408);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10406);
   }
-  /* ./parser//parser.nit:10409 */
+  /* ./parser//parser.nit:10407 */
   fra.me.REG[3] = NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10412 */
+  /* ./parser//parser.nit:10410 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10413 */
+  /* ./parser//parser.nit:10411 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction345____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10413);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10411);
   }
   REGB0 = ATTR_parser___ReduceAction345____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34817,7 +34805,7 @@ void parser___ReduceAction345___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos320]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10416;
+  fra.me.line = 10414;
   fra.me.meth = LOCATE_parser___ReduceAction345___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34825,7 +34813,7 @@ void parser___ReduceAction345___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10416 */
+  /* ./parser//parser.nit:10414 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction345____goto(fra.me.REG[1]) = REGB0;
@@ -34839,7 +34827,7 @@ void parser___ReduceAction346___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10420;
+  fra.me.line = 10418;
   fra.me.meth = LOCATE_parser___ReduceAction346___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34849,25 +34837,25 @@ void parser___ReduceAction346___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10422 */
+  /* ./parser//parser.nit:10420 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10423 */
+  /* ./parser//parser.nit:10421 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10425 */
+  /* ./parser//parser.nit:10423 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TFloat, ID_TFloat)) /*cast nullable TFloat*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10425);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10423);
   }
-  /* ./parser//parser.nit:10426 */
+  /* ./parser//parser.nit:10424 */
   fra.me.REG[3] = NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10429 */
+  /* ./parser//parser.nit:10427 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10430 */
+  /* ./parser//parser.nit:10428 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction346____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10430);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10428);
   }
   REGB0 = ATTR_parser___ReduceAction346____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34883,7 +34871,7 @@ void parser___ReduceAction346___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos321]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10433;
+  fra.me.line = 10431;
   fra.me.meth = LOCATE_parser___ReduceAction346___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34891,7 +34879,7 @@ void parser___ReduceAction346___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10433 */
+  /* ./parser//parser.nit:10431 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction346____goto(fra.me.REG[1]) = REGB0;
@@ -34905,7 +34893,7 @@ void parser___ReduceAction347___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10437;
+  fra.me.line = 10435;
   fra.me.meth = LOCATE_parser___ReduceAction347___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34915,25 +34903,25 @@ void parser___ReduceAction347___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10439 */
+  /* ./parser//parser.nit:10437 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10440 */
+  /* ./parser//parser.nit:10438 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10442 */
+  /* ./parser//parser.nit:10440 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TChar, ID_TChar)) /*cast nullable TChar*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10442);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10440);
   }
-  /* ./parser//parser.nit:10443 */
+  /* ./parser//parser.nit:10441 */
   fra.me.REG[3] = NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10446 */
+  /* ./parser//parser.nit:10444 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10447 */
+  /* ./parser//parser.nit:10445 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction347____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10447);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10445);
   }
   REGB0 = ATTR_parser___ReduceAction347____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -34949,7 +34937,7 @@ void parser___ReduceAction347___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos322]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10450;
+  fra.me.line = 10448;
   fra.me.meth = LOCATE_parser___ReduceAction347___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -34957,7 +34945,7 @@ void parser___ReduceAction347___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10450 */
+  /* ./parser//parser.nit:10448 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction347____goto(fra.me.REG[1]) = REGB0;
@@ -34971,7 +34959,7 @@ void parser___ReduceAction348___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10454;
+  fra.me.line = 10452;
   fra.me.meth = LOCATE_parser___ReduceAction348___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -34981,25 +34969,25 @@ void parser___ReduceAction348___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10456 */
+  /* ./parser//parser.nit:10454 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10457 */
+  /* ./parser//parser.nit:10455 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10459 */
+  /* ./parser//parser.nit:10457 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TString, ID_TString)) /*cast nullable TString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10459);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10457);
   }
-  /* ./parser//parser.nit:10460 */
+  /* ./parser//parser.nit:10458 */
   fra.me.REG[3] = NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10463 */
+  /* ./parser//parser.nit:10461 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10464 */
+  /* ./parser//parser.nit:10462 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction348____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10464);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10462);
   }
   REGB0 = ATTR_parser___ReduceAction348____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35015,7 +35003,7 @@ void parser___ReduceAction348___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos323]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10467;
+  fra.me.line = 10465;
   fra.me.meth = LOCATE_parser___ReduceAction348___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35023,7 +35011,7 @@ void parser___ReduceAction348___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10467 */
+  /* ./parser//parser.nit:10465 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction348____goto(fra.me.REG[1]) = REGB0;
@@ -35037,7 +35025,7 @@ void parser___ReduceAction351___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10471;
+  fra.me.line = 10469;
   fra.me.meth = LOCATE_parser___ReduceAction351___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -35049,55 +35037,55 @@ void parser___ReduceAction351___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10473 */
+  /* ./parser//parser.nit:10471 */
   fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10472 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10473 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10474 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10475 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10476 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10477 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10478 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10479 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10480 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10481 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10482 */
+  /* ./parser//parser.nit:10481 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10483 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10485 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10485);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10483);
   }
-  /* ./parser//parser.nit:10487 */
+  /* ./parser//parser.nit:10485 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwas, ID_TKwas)) /*cast nullable TKwas*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10487);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10485);
   }
-  /* ./parser//parser.nit:10489 */
+  /* ./parser//parser.nit:10487 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AType, ID_AType)) /*cast nullable AType*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10489);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10487);
   }
-  /* ./parser//parser.nit:10490 */
+  /* ./parser//parser.nit:10488 */
   fra.me.REG[3] = NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10495 */
+  /* ./parser//parser.nit:10493 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10496 */
+  /* ./parser//parser.nit:10494 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction351____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10496);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10494);
   }
   REGB0 = ATTR_parser___ReduceAction351____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35113,7 +35101,7 @@ void parser___ReduceAction351___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos324]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10499;
+  fra.me.line = 10497;
   fra.me.meth = LOCATE_parser___ReduceAction351___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35121,7 +35109,7 @@ void parser___ReduceAction351___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10499 */
+  /* ./parser//parser.nit:10497 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction351____goto(fra.me.REG[1]) = REGB0;
@@ -35135,7 +35123,7 @@ void parser___ReduceAction352___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10503;
+  fra.me.line = 10501;
   fra.me.meth = LOCATE_parser___ReduceAction352___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -35148,65 +35136,65 @@ void parser___ReduceAction352___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10505 */
+  /* ./parser//parser.nit:10503 */
   fra.me.REG[2] = NIT_NULL;
+  /* ./parser//parser.nit:10504 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10505 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10506 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10507 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10508 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10509 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10509 */
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10510 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10511 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10512 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10513 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10514 */
-  fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10515 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10516 */
+  /* ./parser//parser.nit:10515 */
   fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10517 */
-  fra.me.REG[6] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10519 */
   REGB0 = TAG_Bool((fra.me.REG[6]==NIT_NULL) || VAL_ISA(fra.me.REG[6], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10519);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10517);
   }
-  /* ./parser//parser.nit:10521 */
+  /* ./parser//parser.nit:10519 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwas, ID_TKwas)) /*cast nullable TKwas*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10521);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10519);
   }
-  /* ./parser//parser.nit:10523 */
+  /* ./parser//parser.nit:10521 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwnot, ID_TKwnot)) /*cast nullable TKwnot*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10523);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10521);
   }
-  /* ./parser//parser.nit:10525 */
+  /* ./parser//parser.nit:10523 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TKwnull, ID_TKwnull)) /*cast nullable TKwnull*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10525);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10523);
   }
-  /* ./parser//parser.nit:10526 */
+  /* ./parser//parser.nit:10524 */
   fra.me.REG[3] = NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[6], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10532 */
+  /* ./parser//parser.nit:10530 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10533 */
+  /* ./parser//parser.nit:10531 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction352____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10533);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10531);
   }
   REGB0 = ATTR_parser___ReduceAction352____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35222,7 +35210,7 @@ void parser___ReduceAction352___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos325]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10536;
+  fra.me.line = 10534;
   fra.me.meth = LOCATE_parser___ReduceAction352___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35230,7 +35218,7 @@ void parser___ReduceAction352___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10536 */
+  /* ./parser//parser.nit:10534 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction352____goto(fra.me.REG[1]) = REGB0;
@@ -35245,7 +35233,7 @@ void parser___ReduceAction353___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10540;
+  fra.me.line = 10538;
   fra.me.meth = LOCATE_parser___ReduceAction353___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -35257,30 +35245,30 @@ void parser___ReduceAction353___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10542 */
+  /* ./parser//parser.nit:10540 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10543 */
+  /* ./parser//parser.nit:10541 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10544 */
+  /* ./parser//parser.nit:10542 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10545 */
+  /* ./parser//parser.nit:10543 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10547 */
+  /* ./parser//parser.nit:10545 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10547);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10545);
   }
-  /* ./parser//parser.nit:10549 */
+  /* ./parser//parser.nit:10547 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10549);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10547);
   }
-  /* ./parser//parser.nit:10550 */
+  /* ./parser//parser.nit:10548 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:10551 */
+  /* ./parser//parser.nit:10549 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -35295,18 +35283,18 @@ void parser___ReduceAction353___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10552 */
+    /* ./parser//parser.nit:10550 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10554 */
+  /* ./parser//parser.nit:10552 */
   fra.me.REG[5] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[5]);
-  /* ./parser//parser.nit:10557 */
+  /* ./parser//parser.nit:10555 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:10558 */
+  /* ./parser//parser.nit:10556 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction353____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10558);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10556);
   }
   REGB0 = ATTR_parser___ReduceAction353____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35322,7 +35310,7 @@ void parser___ReduceAction353___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos326]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10561;
+  fra.me.line = 10559;
   fra.me.meth = LOCATE_parser___ReduceAction353___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35330,7 +35318,7 @@ void parser___ReduceAction353___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10561 */
+  /* ./parser//parser.nit:10559 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction353____goto(fra.me.REG[1]) = REGB0;
@@ -35345,7 +35333,7 @@ void parser___ReduceAction354___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10565;
+  fra.me.line = 10563;
   fra.me.meth = LOCATE_parser___ReduceAction354___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -35358,41 +35346,41 @@ void parser___ReduceAction354___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10567 */
+  /* ./parser//parser.nit:10565 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10568 */
+  /* ./parser//parser.nit:10566 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10569 */
+  /* ./parser//parser.nit:10567 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10570 */
+  /* ./parser//parser.nit:10568 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10571 */
+  /* ./parser//parser.nit:10569 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10573 */
+  /* ./parser//parser.nit:10571 */
   REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10573);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10571);
   }
-  /* ./parser//parser.nit:10575 */
+  /* ./parser//parser.nit:10573 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10575);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10573);
   }
-  /* ./parser//parser.nit:10577 */
+  /* ./parser//parser.nit:10575 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10577);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10575);
   }
-  /* ./parser//parser.nit:10578 */
+  /* ./parser//parser.nit:10576 */
   fra.me.REG[5] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[5]);
   fra.me.REG[6] = fra.me.REG[5];
-  /* ./parser//parser.nit:10579 */
+  /* ./parser//parser.nit:10577 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[4]);
   fra.me.REG[6] = fra.me.REG[4];
-  /* ./parser//parser.nit:10580 */
+  /* ./parser//parser.nit:10578 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -35407,18 +35395,18 @@ void parser___ReduceAction354___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10581 */
+    /* ./parser//parser.nit:10579 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10583 */
+  /* ./parser//parser.nit:10581 */
   fra.me.REG[6] = NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[6]);
-  /* ./parser//parser.nit:10586 */
+  /* ./parser//parser.nit:10584 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:10587 */
+  /* ./parser//parser.nit:10585 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction354____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10587);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10585);
   }
   REGB0 = ATTR_parser___ReduceAction354____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35434,7 +35422,7 @@ void parser___ReduceAction354___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos327]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10590;
+  fra.me.line = 10588;
   fra.me.meth = LOCATE_parser___ReduceAction354___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35442,7 +35430,7 @@ void parser___ReduceAction354___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10590 */
+  /* ./parser//parser.nit:10588 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction354____goto(fra.me.REG[1]) = REGB0;
@@ -35457,7 +35445,7 @@ void parser___ReduceAction355___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10594;
+  fra.me.line = 10592;
   fra.me.meth = LOCATE_parser___ReduceAction355___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -35469,19 +35457,19 @@ void parser___ReduceAction355___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10596 */
+  /* ./parser//parser.nit:10594 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10597 */
+  /* ./parser//parser.nit:10595 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10598 */
+  /* ./parser//parser.nit:10596 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10599 */
+  /* ./parser//parser.nit:10597 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10600 */
+  /* ./parser//parser.nit:10598 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10601 */
+  /* ./parser//parser.nit:10599 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10604 */
+  /* ./parser//parser.nit:10602 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -35496,10 +35484,10 @@ void parser___ReduceAction355___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10605 */
+    /* ./parser//parser.nit:10603 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:10607 */
+  /* ./parser//parser.nit:10605 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -35514,16 +35502,16 @@ void parser___ReduceAction355___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10608 */
+    /* ./parser//parser.nit:10606 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10610 */
+  /* ./parser//parser.nit:10608 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:10611 */
+  /* ./parser//parser.nit:10609 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction355____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10611);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10609);
   }
   REGB0 = ATTR_parser___ReduceAction355____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35539,7 +35527,7 @@ void parser___ReduceAction355___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos328]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10614;
+  fra.me.line = 10612;
   fra.me.meth = LOCATE_parser___ReduceAction355___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35547,7 +35535,7 @@ void parser___ReduceAction355___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10614 */
+  /* ./parser//parser.nit:10612 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction355____goto(fra.me.REG[1]) = REGB0;
@@ -35561,7 +35549,7 @@ void parser___ReduceAction356___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10618;
+  fra.me.line = 10616;
   fra.me.meth = LOCATE_parser___ReduceAction356___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35571,25 +35559,25 @@ void parser___ReduceAction356___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10620 */
+  /* ./parser//parser.nit:10618 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10621 */
+  /* ./parser//parser.nit:10619 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10623 */
+  /* ./parser//parser.nit:10621 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TStartString, ID_TStartString)) /*cast nullable TStartString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10623);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10621);
   }
-  /* ./parser//parser.nit:10624 */
+  /* ./parser//parser.nit:10622 */
   fra.me.REG[3] = NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10627 */
+  /* ./parser//parser.nit:10625 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10628 */
+  /* ./parser//parser.nit:10626 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction356____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10628);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10626);
   }
   REGB0 = ATTR_parser___ReduceAction356____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35605,7 +35593,7 @@ void parser___ReduceAction356___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos329]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10631;
+  fra.me.line = 10629;
   fra.me.meth = LOCATE_parser___ReduceAction356___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35613,7 +35601,7 @@ void parser___ReduceAction356___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10631 */
+  /* ./parser//parser.nit:10629 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction356____goto(fra.me.REG[1]) = REGB0;
@@ -35627,7 +35615,7 @@ void parser___ReduceAction358___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10635;
+  fra.me.line = 10633;
   fra.me.meth = LOCATE_parser___ReduceAction358___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35637,25 +35625,25 @@ void parser___ReduceAction358___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10637 */
+  /* ./parser//parser.nit:10635 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10638 */
+  /* ./parser//parser.nit:10636 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10640 */
+  /* ./parser//parser.nit:10638 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TMidString, ID_TMidString)) /*cast nullable TMidString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10640);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10638);
   }
-  /* ./parser//parser.nit:10641 */
+  /* ./parser//parser.nit:10639 */
   fra.me.REG[3] = NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10644 */
+  /* ./parser//parser.nit:10642 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10645 */
+  /* ./parser//parser.nit:10643 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction358____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10645);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10643);
   }
   REGB0 = ATTR_parser___ReduceAction358____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35671,7 +35659,7 @@ void parser___ReduceAction358___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos330]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10648;
+  fra.me.line = 10646;
   fra.me.meth = LOCATE_parser___ReduceAction358___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35679,7 +35667,7 @@ void parser___ReduceAction358___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10648 */
+  /* ./parser//parser.nit:10646 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction358____goto(fra.me.REG[1]) = REGB0;
@@ -35693,7 +35681,7 @@ void parser___ReduceAction359___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10652;
+  fra.me.line = 10650;
   fra.me.meth = LOCATE_parser___ReduceAction359___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35703,25 +35691,25 @@ void parser___ReduceAction359___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10654 */
+  /* ./parser//parser.nit:10652 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10655 */
+  /* ./parser//parser.nit:10653 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10657 */
+  /* ./parser//parser.nit:10655 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TEndString, ID_TEndString)) /*cast nullable TEndString*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10657);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10655);
   }
-  /* ./parser//parser.nit:10658 */
+  /* ./parser//parser.nit:10656 */
   fra.me.REG[3] = NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[3]);
-  /* ./parser//parser.nit:10661 */
+  /* ./parser//parser.nit:10659 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10662 */
+  /* ./parser//parser.nit:10660 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction359____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10662);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10660);
   }
   REGB0 = ATTR_parser___ReduceAction359____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35737,7 +35725,7 @@ void parser___ReduceAction359___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos331]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10665;
+  fra.me.line = 10663;
   fra.me.meth = LOCATE_parser___ReduceAction359___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35745,7 +35733,7 @@ void parser___ReduceAction359___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10665 */
+  /* ./parser//parser.nit:10663 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction359____goto(fra.me.REG[1]) = REGB0;
@@ -35760,7 +35748,7 @@ void parser___ReduceAction360___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10669;
+  fra.me.line = 10667;
   fra.me.meth = LOCATE_parser___ReduceAction360___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -35771,21 +35759,21 @@ void parser___ReduceAction360___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10671 */
+  /* ./parser//parser.nit:10669 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10672 */
+  /* ./parser//parser.nit:10670 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10673 */
+  /* ./parser//parser.nit:10671 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10674 */
+  /* ./parser//parser.nit:10672 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10675 */
+  /* ./parser//parser.nit:10673 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10676 */
+  /* ./parser//parser.nit:10674 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10677 */
+  /* ./parser//parser.nit:10675 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10679 */
+  /* ./parser//parser.nit:10677 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -35800,16 +35788,16 @@ void parser___ReduceAction360___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10680 */
+    /* ./parser//parser.nit:10678 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10682 */
+  /* ./parser//parser.nit:10680 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10683 */
+  /* ./parser//parser.nit:10681 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction360____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10683);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10681);
   }
   REGB0 = ATTR_parser___ReduceAction360____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35825,7 +35813,7 @@ void parser___ReduceAction360___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos332]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10686;
+  fra.me.line = 10684;
   fra.me.meth = LOCATE_parser___ReduceAction360___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35833,7 +35821,7 @@ void parser___ReduceAction360___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10686 */
+  /* ./parser//parser.nit:10684 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction360____goto(fra.me.REG[1]) = REGB0;
@@ -35848,7 +35836,7 @@ void parser___ReduceAction361___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10690;
+  fra.me.line = 10688;
   fra.me.meth = LOCATE_parser___ReduceAction361___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -35860,29 +35848,29 @@ void parser___ReduceAction361___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10692 */
+  /* ./parser//parser.nit:10690 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10693 */
+  /* ./parser//parser.nit:10691 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10694 */
+  /* ./parser//parser.nit:10692 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10695 */
+  /* ./parser//parser.nit:10693 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10696 */
+  /* ./parser//parser.nit:10694 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10697 */
+  /* ./parser//parser.nit:10695 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10698 */
+  /* ./parser//parser.nit:10696 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10699 */
+  /* ./parser//parser.nit:10697 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10702 */
+  /* ./parser//parser.nit:10700 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10702);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10700);
   }
-  /* ./parser//parser.nit:10703 */
+  /* ./parser//parser.nit:10701 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -35897,19 +35885,19 @@ void parser___ReduceAction361___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10704 */
+    /* ./parser//parser.nit:10702 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   }
-  /* ./parser//parser.nit:10706 */
+  /* ./parser//parser.nit:10704 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:10707 */
+  /* ./parser//parser.nit:10705 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:10708 */
+  /* ./parser//parser.nit:10706 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction361____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10708);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10706);
   }
   REGB0 = ATTR_parser___ReduceAction361____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35925,7 +35913,7 @@ void parser___ReduceAction361___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos333]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10711;
+  fra.me.line = 10709;
   fra.me.meth = LOCATE_parser___ReduceAction361___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35933,7 +35921,7 @@ void parser___ReduceAction361___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10711 */
+  /* ./parser//parser.nit:10709 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction361____goto(fra.me.REG[1]) = REGB0;
@@ -35947,7 +35935,7 @@ void parser___ReduceAction363___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10715;
+  fra.me.line = 10713;
   fra.me.meth = LOCATE_parser___ReduceAction363___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -35957,17 +35945,17 @@ void parser___ReduceAction363___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10717 */
+  /* ./parser//parser.nit:10715 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10718 */
+  /* ./parser//parser.nit:10716 */
   fra.me.REG[3] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10719 */
+  /* ./parser//parser.nit:10717 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10720 */
+  /* ./parser//parser.nit:10718 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction363____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10720);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10718);
   }
   REGB0 = ATTR_parser___ReduceAction363____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -35983,7 +35971,7 @@ void parser___ReduceAction363___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos334]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10723;
+  fra.me.line = 10721;
   fra.me.meth = LOCATE_parser___ReduceAction363___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35991,7 +35979,7 @@ void parser___ReduceAction363___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10723 */
+  /* ./parser//parser.nit:10721 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction363____goto(fra.me.REG[1]) = REGB0;
@@ -36006,7 +35994,7 @@ void parser___ReduceAction366___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10727;
+  fra.me.line = 10725;
   fra.me.meth = LOCATE_parser___ReduceAction366___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36017,13 +36005,13 @@ void parser___ReduceAction366___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10729 */
+  /* ./parser//parser.nit:10727 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10730 */
+  /* ./parser//parser.nit:10728 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10731 */
+  /* ./parser//parser.nit:10729 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10733 */
+  /* ./parser//parser.nit:10731 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -36038,16 +36026,16 @@ void parser___ReduceAction366___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10734 */
+    /* ./parser//parser.nit:10732 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10736 */
+  /* ./parser//parser.nit:10734 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10737 */
+  /* ./parser//parser.nit:10735 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction366____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10737);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10735);
   }
   REGB0 = ATTR_parser___ReduceAction366____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36063,7 +36051,7 @@ void parser___ReduceAction366___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos335]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10740;
+  fra.me.line = 10738;
   fra.me.meth = LOCATE_parser___ReduceAction366___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36071,7 +36059,7 @@ void parser___ReduceAction366___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10740 */
+  /* ./parser//parser.nit:10738 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction366____goto(fra.me.REG[1]) = REGB0;
@@ -36085,7 +36073,7 @@ void parser___ReduceAction371___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10744;
+  fra.me.line = 10742;
   fra.me.meth = LOCATE_parser___ReduceAction371___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36096,23 +36084,23 @@ void parser___ReduceAction371___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10746 */
+  /* ./parser//parser.nit:10744 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10747 */
+  /* ./parser//parser.nit:10745 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10748 */
+  /* ./parser//parser.nit:10746 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10749 */
+  /* ./parser//parser.nit:10747 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10750 */
+  /* ./parser//parser.nit:10748 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10752 */
+  /* ./parser//parser.nit:10750 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10753 */
+  /* ./parser//parser.nit:10751 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction371____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10753);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10751);
   }
   REGB0 = ATTR_parser___ReduceAction371____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36128,7 +36116,7 @@ void parser___ReduceAction371___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos336]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10756;
+  fra.me.line = 10754;
   fra.me.meth = LOCATE_parser___ReduceAction371___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36136,7 +36124,7 @@ void parser___ReduceAction371___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10756 */
+  /* ./parser//parser.nit:10754 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction371____goto(fra.me.REG[1]) = REGB0;
@@ -36150,7 +36138,7 @@ void parser___ReduceAction372___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10760;
+  fra.me.line = 10758;
   fra.me.meth = LOCATE_parser___ReduceAction372___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36161,32 +36149,32 @@ void parser___ReduceAction372___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10762 */
+  /* ./parser//parser.nit:10760 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10763 */
+  /* ./parser//parser.nit:10761 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10764 */
+  /* ./parser//parser.nit:10762 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10765 */
+  /* ./parser//parser.nit:10763 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10766 */
+  /* ./parser//parser.nit:10764 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10768 */
+  /* ./parser//parser.nit:10766 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10768);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10766);
   }
-  /* ./parser//parser.nit:10769 */
+  /* ./parser//parser.nit:10767 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:10770 */
+  /* ./parser//parser.nit:10768 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10771 */
+  /* ./parser//parser.nit:10769 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction372____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10771);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10769);
   }
   REGB0 = ATTR_parser___ReduceAction372____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36202,7 +36190,7 @@ void parser___ReduceAction372___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos337]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10774;
+  fra.me.line = 10772;
   fra.me.meth = LOCATE_parser___ReduceAction372___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36210,7 +36198,7 @@ void parser___ReduceAction372___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10774 */
+  /* ./parser//parser.nit:10772 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction372____goto(fra.me.REG[1]) = REGB0;
@@ -36224,7 +36212,7 @@ void parser___ReduceAction373___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10778;
+  fra.me.line = 10776;
   fra.me.meth = LOCATE_parser___ReduceAction373___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36235,28 +36223,28 @@ void parser___ReduceAction373___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10780 */
+  /* ./parser//parser.nit:10778 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10781 */
+  /* ./parser//parser.nit:10779 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10782 */
+  /* ./parser//parser.nit:10780 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10784 */
+  /* ./parser//parser.nit:10782 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10784);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10782);
   }
-  /* ./parser//parser.nit:10785 */
+  /* ./parser//parser.nit:10783 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:10786 */
+  /* ./parser//parser.nit:10784 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10787 */
+  /* ./parser//parser.nit:10785 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction373____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10787);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10785);
   }
   REGB0 = ATTR_parser___ReduceAction373____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36272,7 +36260,7 @@ void parser___ReduceAction373___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos338]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10790;
+  fra.me.line = 10788;
   fra.me.meth = LOCATE_parser___ReduceAction373___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36280,7 +36268,7 @@ void parser___ReduceAction373___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10790 */
+  /* ./parser//parser.nit:10788 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction373____goto(fra.me.REG[1]) = REGB0;
@@ -36295,7 +36283,7 @@ void parser___ReduceAction374___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10794;
+  fra.me.line = 10792;
   fra.me.meth = LOCATE_parser___ReduceAction374___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36306,13 +36294,13 @@ void parser___ReduceAction374___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10796 */
+  /* ./parser//parser.nit:10794 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10797 */
+  /* ./parser//parser.nit:10795 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10798 */
+  /* ./parser//parser.nit:10796 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10800 */
+  /* ./parser//parser.nit:10798 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -36327,16 +36315,16 @@ void parser___ReduceAction374___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10801 */
+    /* ./parser//parser.nit:10799 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10803 */
+  /* ./parser//parser.nit:10801 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10804 */
+  /* ./parser//parser.nit:10802 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction374____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10804);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10802);
   }
   REGB0 = ATTR_parser___ReduceAction374____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36352,7 +36340,7 @@ void parser___ReduceAction374___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos339]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10807;
+  fra.me.line = 10805;
   fra.me.meth = LOCATE_parser___ReduceAction374___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36360,7 +36348,7 @@ void parser___ReduceAction374___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10807 */
+  /* ./parser//parser.nit:10805 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction374____goto(fra.me.REG[1]) = REGB0;
@@ -36375,7 +36363,7 @@ void parser___ReduceAction375___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10811;
+  fra.me.line = 10809;
   fra.me.meth = LOCATE_parser___ReduceAction375___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -36387,30 +36375,30 @@ void parser___ReduceAction375___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10813 */
+  /* ./parser//parser.nit:10811 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10814 */
+  /* ./parser//parser.nit:10812 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10813 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:10814 */
+  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10815 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10816 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:10817 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10818 */
-  fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10819 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10821 */
+  /* ./parser//parser.nit:10819 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10821);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10819);
   }
-  /* ./parser//parser.nit:10823 */
+  /* ./parser//parser.nit:10821 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:10824 */
+  /* ./parser//parser.nit:10822 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -36425,16 +36413,16 @@ void parser___ReduceAction375___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:10825 */
+    /* ./parser//parser.nit:10823 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:10827 */
+  /* ./parser//parser.nit:10825 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:10828 */
+  /* ./parser//parser.nit:10826 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction375____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10828);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10826);
   }
   REGB0 = ATTR_parser___ReduceAction375____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36450,7 +36438,7 @@ void parser___ReduceAction375___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos340]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10831;
+  fra.me.line = 10829;
   fra.me.meth = LOCATE_parser___ReduceAction375___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36458,7 +36446,7 @@ void parser___ReduceAction375___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10831 */
+  /* ./parser//parser.nit:10829 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction375____goto(fra.me.REG[1]) = REGB0;
@@ -36472,7 +36460,7 @@ void parser___ReduceAction376___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10835;
+  fra.me.line = 10833;
   fra.me.meth = LOCATE_parser___ReduceAction376___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36483,27 +36471,27 @@ void parser___ReduceAction376___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10837 */
+  /* ./parser//parser.nit:10835 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10838 */
+  /* ./parser//parser.nit:10836 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10839 */
+  /* ./parser//parser.nit:10837 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10841 */
+  /* ./parser//parser.nit:10839 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10841);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10839);
   }
-  /* ./parser//parser.nit:10842 */
+  /* ./parser//parser.nit:10840 */
   fra.me.REG[3] = NEW_AQualified_parser_prod___AQualified___init_aqualified(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:10846 */
+  /* ./parser//parser.nit:10844 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10847 */
+  /* ./parser//parser.nit:10845 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction376____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10847);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10845);
   }
   REGB0 = ATTR_parser___ReduceAction376____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36519,7 +36507,7 @@ void parser___ReduceAction376___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos341]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10850;
+  fra.me.line = 10848;
   fra.me.meth = LOCATE_parser___ReduceAction376___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36527,7 +36515,7 @@ void parser___ReduceAction376___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10850 */
+  /* ./parser//parser.nit:10848 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction376____goto(fra.me.REG[1]) = REGB0;
@@ -36541,7 +36529,7 @@ void parser___ReduceAction377___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10854;
+  fra.me.line = 10852;
   fra.me.meth = LOCATE_parser___ReduceAction377___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -36553,38 +36541,38 @@ void parser___ReduceAction377___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10856 */
+  /* ./parser//parser.nit:10854 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10857 */
+  /* ./parser//parser.nit:10855 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10858 */
+  /* ./parser//parser.nit:10856 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10859 */
+  /* ./parser//parser.nit:10857 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10861 */
+  /* ./parser//parser.nit:10859 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10861);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10859);
   }
-  /* ./parser//parser.nit:10862 */
+  /* ./parser//parser.nit:10860 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:10864 */
+  /* ./parser//parser.nit:10862 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TClassid, ID_TClassid)) /*cast nullable TClassid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10864);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10862);
   }
-  /* ./parser//parser.nit:10865 */
+  /* ./parser//parser.nit:10863 */
   fra.me.REG[3] = NEW_AQualified_parser_prod___AQualified___init_aqualified(fra.me.REG[5], fra.me.REG[3]);
-  /* ./parser//parser.nit:10869 */
+  /* ./parser//parser.nit:10867 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10870 */
+  /* ./parser//parser.nit:10868 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction377____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10870);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10868);
   }
   REGB0 = ATTR_parser___ReduceAction377____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36600,7 +36588,7 @@ void parser___ReduceAction377___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos342]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10873;
+  fra.me.line = 10871;
   fra.me.meth = LOCATE_parser___ReduceAction377___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36608,7 +36596,7 @@ void parser___ReduceAction377___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10873 */
+  /* ./parser//parser.nit:10871 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction377____goto(fra.me.REG[1]) = REGB0;
@@ -36622,7 +36610,7 @@ void parser___ReduceAction378___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10877;
+  fra.me.line = 10875;
   fra.me.meth = LOCATE_parser___ReduceAction378___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36633,30 +36621,30 @@ void parser___ReduceAction378___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10879 */
+  /* ./parser//parser.nit:10877 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10880 */
+  /* ./parser//parser.nit:10878 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10881 */
+  /* ./parser//parser.nit:10879 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10883 */
+  /* ./parser//parser.nit:10881 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10883);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10881);
   }
-  /* ./parser//parser.nit:10884 */
+  /* ./parser//parser.nit:10882 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:10885 */
+  /* ./parser//parser.nit:10883 */
   fra.me.REG[4] = NEW_AQualified_parser_prod___AQualified___init_aqualified(fra.me.REG[4], NIT_NULL);
-  /* ./parser//parser.nit:10889 */
+  /* ./parser//parser.nit:10887 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10890 */
+  /* ./parser//parser.nit:10888 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction378____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10890);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10888);
   }
   REGB0 = ATTR_parser___ReduceAction378____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36672,7 +36660,7 @@ void parser___ReduceAction378___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos343]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10893;
+  fra.me.line = 10891;
   fra.me.meth = LOCATE_parser___ReduceAction378___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36680,7 +36668,7 @@ void parser___ReduceAction378___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10893 */
+  /* ./parser//parser.nit:10891 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction378____goto(fra.me.REG[1]) = REGB0;
@@ -36694,7 +36682,7 @@ void parser___ReduceAction379___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10897;
+  fra.me.line = 10895;
   fra.me.meth = LOCATE_parser___ReduceAction379___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36704,21 +36692,21 @@ void parser___ReduceAction379___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10899 */
+  /* ./parser//parser.nit:10897 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10900 */
+  /* ./parser//parser.nit:10898 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10901 */
+  /* ./parser//parser.nit:10899 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10902 */
+  /* ./parser//parser.nit:10900 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10904 */
+  /* ./parser//parser.nit:10902 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10905 */
+  /* ./parser//parser.nit:10903 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction379____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10905);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10903);
   }
   REGB0 = ATTR_parser___ReduceAction379____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36734,7 +36722,7 @@ void parser___ReduceAction379___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos344]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10908;
+  fra.me.line = 10906;
   fra.me.meth = LOCATE_parser___ReduceAction379___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36742,7 +36730,7 @@ void parser___ReduceAction379___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10908 */
+  /* ./parser//parser.nit:10906 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction379____goto(fra.me.REG[1]) = REGB0;
@@ -36756,7 +36744,7 @@ void parser___ReduceAction380___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10912;
+  fra.me.line = 10910;
   fra.me.meth = LOCATE_parser___ReduceAction380___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36766,21 +36754,21 @@ void parser___ReduceAction380___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10914 */
+  /* ./parser//parser.nit:10912 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10915 */
+  /* ./parser//parser.nit:10913 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10916 */
+  /* ./parser//parser.nit:10914 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10917 */
+  /* ./parser//parser.nit:10915 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10919 */
+  /* ./parser//parser.nit:10917 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10920 */
+  /* ./parser//parser.nit:10918 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction380____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10920);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10918);
   }
   REGB0 = ATTR_parser___ReduceAction380____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36796,7 +36784,7 @@ void parser___ReduceAction380___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos345]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10923;
+  fra.me.line = 10921;
   fra.me.meth = LOCATE_parser___ReduceAction380___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36804,7 +36792,7 @@ void parser___ReduceAction380___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10923 */
+  /* ./parser//parser.nit:10921 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction380____goto(fra.me.REG[1]) = REGB0;
@@ -36818,7 +36806,7 @@ void parser___ReduceAction381___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10927;
+  fra.me.line = 10925;
   fra.me.meth = LOCATE_parser___ReduceAction381___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -36828,15 +36816,15 @@ void parser___ReduceAction381___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10929 */
+  /* ./parser//parser.nit:10927 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10930 */
+  /* ./parser//parser.nit:10928 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10931 */
+  /* ./parser//parser.nit:10929 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction381____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10931);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10929);
   }
   REGB0 = ATTR_parser___ReduceAction381____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36852,7 +36840,7 @@ void parser___ReduceAction381___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos346]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10934;
+  fra.me.line = 10932;
   fra.me.meth = LOCATE_parser___ReduceAction381___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36860,7 +36848,7 @@ void parser___ReduceAction381___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10934 */
+  /* ./parser//parser.nit:10932 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction381____goto(fra.me.REG[1]) = REGB0;
@@ -36874,7 +36862,7 @@ void parser___ReduceAction383___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10938;
+  fra.me.line = 10936;
   fra.me.meth = LOCATE_parser___ReduceAction383___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36885,30 +36873,30 @@ void parser___ReduceAction383___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10940 */
+  /* ./parser//parser.nit:10938 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10941 */
+  /* ./parser//parser.nit:10939 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10942 */
+  /* ./parser//parser.nit:10940 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10944 */
+  /* ./parser//parser.nit:10942 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10944);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10942);
   }
-  /* ./parser//parser.nit:10945 */
+  /* ./parser//parser.nit:10943 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:10946 */
+  /* ./parser//parser.nit:10944 */
   fra.me.REG[4] = NEW_ADoc_parser_prod___ADoc___init_adoc(fra.me.REG[4]);
-  /* ./parser//parser.nit:10949 */
+  /* ./parser//parser.nit:10947 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10950 */
+  /* ./parser//parser.nit:10948 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction383____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10950);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10948);
   }
   REGB0 = ATTR_parser___ReduceAction383____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36924,7 +36912,7 @@ void parser___ReduceAction383___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos347]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10953;
+  fra.me.line = 10951;
   fra.me.meth = LOCATE_parser___ReduceAction383___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -36932,7 +36920,7 @@ void parser___ReduceAction383___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10953 */
+  /* ./parser//parser.nit:10951 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction383____goto(fra.me.REG[1]) = REGB0;
@@ -36946,7 +36934,7 @@ void parser___ReduceAction384___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10957;
+  fra.me.line = 10955;
   fra.me.meth = LOCATE_parser___ReduceAction384___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -36957,32 +36945,32 @@ void parser___ReduceAction384___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10959 */
+  /* ./parser//parser.nit:10957 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10960 */
+  /* ./parser//parser.nit:10958 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10961 */
+  /* ./parser//parser.nit:10959 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10962 */
+  /* ./parser//parser.nit:10960 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:10964 */
+  /* ./parser//parser.nit:10962 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 10964);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 10962);
   }
-  /* ./parser//parser.nit:10965 */
+  /* ./parser//parser.nit:10963 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[4] = fra.me.REG[3];
-  /* ./parser//parser.nit:10966 */
+  /* ./parser//parser.nit:10964 */
   fra.me.REG[4] = NEW_ADoc_parser_prod___ADoc___init_adoc(fra.me.REG[4]);
-  /* ./parser//parser.nit:10969 */
+  /* ./parser//parser.nit:10967 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:10970 */
+  /* ./parser//parser.nit:10968 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction384____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10970);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10968);
   }
   REGB0 = ATTR_parser___ReduceAction384____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -36998,7 +36986,7 @@ void parser___ReduceAction384___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos348]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10973;
+  fra.me.line = 10971;
   fra.me.meth = LOCATE_parser___ReduceAction384___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37006,7 +36994,7 @@ void parser___ReduceAction384___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10973 */
+  /* ./parser//parser.nit:10971 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction384____goto(fra.me.REG[1]) = REGB0;
@@ -37020,7 +37008,7 @@ void parser___ReduceAction386___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10977;
+  fra.me.line = 10975;
   fra.me.meth = LOCATE_parser___ReduceAction386___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -37029,15 +37017,15 @@ void parser___ReduceAction386___action(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10979 */
+  /* ./parser//parser.nit:10977 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10980 */
+  /* ./parser//parser.nit:10978 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10981 */
+  /* ./parser//parser.nit:10979 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction386____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10981);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10979);
   }
   REGB0 = ATTR_parser___ReduceAction386____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37053,7 +37041,7 @@ void parser___ReduceAction386___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos349]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10984;
+  fra.me.line = 10982;
   fra.me.meth = LOCATE_parser___ReduceAction386___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37061,7 +37049,7 @@ void parser___ReduceAction386___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10984 */
+  /* ./parser//parser.nit:10982 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction386____goto(fra.me.REG[1]) = REGB0;
@@ -37075,7 +37063,7 @@ void parser___ReduceAction387___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10988;
+  fra.me.line = 10986;
   fra.me.meth = LOCATE_parser___ReduceAction387___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37085,17 +37073,17 @@ void parser___ReduceAction387___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:10990 */
+  /* ./parser//parser.nit:10988 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:10991 */
+  /* ./parser//parser.nit:10989 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:10993 */
+  /* ./parser//parser.nit:10991 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:10994 */
+  /* ./parser//parser.nit:10992 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction387____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10994);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 10992);
   }
   REGB0 = ATTR_parser___ReduceAction387____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37111,7 +37099,7 @@ void parser___ReduceAction387___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos350]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 10997;
+  fra.me.line = 10995;
   fra.me.meth = LOCATE_parser___ReduceAction387___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37119,7 +37107,7 @@ void parser___ReduceAction387___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:10997 */
+  /* ./parser//parser.nit:10995 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction387____goto(fra.me.REG[1]) = REGB0;
@@ -37133,7 +37121,7 @@ void parser___ReduceAction388___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11001;
+  fra.me.line = 10999;
   fra.me.meth = LOCATE_parser___ReduceAction388___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37143,17 +37131,17 @@ void parser___ReduceAction388___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11003 */
+  /* ./parser//parser.nit:11001 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11004 */
+  /* ./parser//parser.nit:11002 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11005 */
+  /* ./parser//parser.nit:11003 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11006 */
+  /* ./parser//parser.nit:11004 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction388____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11006);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11004);
   }
   REGB0 = ATTR_parser___ReduceAction388____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37169,7 +37157,7 @@ void parser___ReduceAction388___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos351]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11009;
+  fra.me.line = 11007;
   fra.me.meth = LOCATE_parser___ReduceAction388___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37177,7 +37165,7 @@ void parser___ReduceAction388___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11009 */
+  /* ./parser//parser.nit:11007 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction388____goto(fra.me.REG[1]) = REGB0;
@@ -37191,7 +37179,7 @@ void parser___ReduceAction389___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11013;
+  fra.me.line = 11011;
   fra.me.meth = LOCATE_parser___ReduceAction389___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37201,19 +37189,19 @@ void parser___ReduceAction389___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11015 */
+  /* ./parser//parser.nit:11013 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11016 */
+  /* ./parser//parser.nit:11014 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11017 */
+  /* ./parser//parser.nit:11015 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11018 */
+  /* ./parser//parser.nit:11016 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11019 */
+  /* ./parser//parser.nit:11017 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction389____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11019);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11017);
   }
   REGB0 = ATTR_parser___ReduceAction389____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37229,7 +37217,7 @@ void parser___ReduceAction389___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos352]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11022;
+  fra.me.line = 11020;
   fra.me.meth = LOCATE_parser___ReduceAction389___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37237,7 +37225,7 @@ void parser___ReduceAction389___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11022 */
+  /* ./parser//parser.nit:11020 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction389____goto(fra.me.REG[1]) = REGB0;
@@ -37251,7 +37239,7 @@ void parser___ReduceAction637___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11026;
+  fra.me.line = 11024;
   fra.me.meth = LOCATE_parser___ReduceAction637___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -37263,41 +37251,41 @@ void parser___ReduceAction637___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11028 */
+  /* ./parser//parser.nit:11026 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11029 */
+  /* ./parser//parser.nit:11027 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11030 */
+  /* ./parser//parser.nit:11028 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11031 */
+  /* ./parser//parser.nit:11029 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11033 */
+  /* ./parser//parser.nit:11031 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_TKwisset, ID_TKwisset)) /*cast nullable TKwisset*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11033);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11031);
   }
-  /* ./parser//parser.nit:11035 */
+  /* ./parser//parser.nit:11033 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11035);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11033);
   }
-  /* ./parser//parser.nit:11037 */
+  /* ./parser//parser.nit:11035 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11037);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11035);
   }
-  /* ./parser//parser.nit:11038 */
+  /* ./parser//parser.nit:11036 */
   fra.me.REG[3] = NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:11043 */
+  /* ./parser//parser.nit:11041 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:11044 */
+  /* ./parser//parser.nit:11042 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction637____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11044);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11042);
   }
   REGB0 = ATTR_parser___ReduceAction637____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37313,7 +37301,7 @@ void parser___ReduceAction637___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos353]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11047;
+  fra.me.line = 11045;
   fra.me.meth = LOCATE_parser___ReduceAction637___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37321,7 +37309,7 @@ void parser___ReduceAction637___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11047 */
+  /* ./parser//parser.nit:11045 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction637____goto(fra.me.REG[1]) = REGB0;
@@ -37335,7 +37323,7 @@ void parser___ReduceAction638___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11051;
+  fra.me.line = 11049;
   fra.me.meth = LOCATE_parser___ReduceAction638___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -37346,33 +37334,33 @@ void parser___ReduceAction638___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11053 */
+  /* ./parser//parser.nit:11051 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11054 */
+  /* ./parser//parser.nit:11052 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11055 */
+  /* ./parser//parser.nit:11053 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11057 */
+  /* ./parser//parser.nit:11055 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11057);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11055);
   }
-  /* ./parser//parser.nit:11059 */
+  /* ./parser//parser.nit:11057 */
   REGB0 = TAG_Bool((fra.me.REG[3]==NIT_NULL) || VAL_ISA(fra.me.REG[3], COLOR_TAttrid, ID_TAttrid)) /*cast nullable TAttrid*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11059);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11057);
   }
-  /* ./parser//parser.nit:11060 */
+  /* ./parser//parser.nit:11058 */
   fra.me.REG[3] = NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[4], fra.me.REG[3]);
-  /* ./parser//parser.nit:11064 */
+  /* ./parser//parser.nit:11062 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:11065 */
+  /* ./parser//parser.nit:11063 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction638____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11065);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11063);
   }
   REGB0 = ATTR_parser___ReduceAction638____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37388,7 +37376,7 @@ void parser___ReduceAction638___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos354]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11068;
+  fra.me.line = 11066;
   fra.me.meth = LOCATE_parser___ReduceAction638___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37396,7 +37384,7 @@ void parser___ReduceAction638___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11068 */
+  /* ./parser//parser.nit:11066 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction638____goto(fra.me.REG[1]) = REGB0;
@@ -37410,7 +37398,7 @@ void parser___ReduceAction639___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11072;
+  fra.me.line = 11070;
   fra.me.meth = LOCATE_parser___ReduceAction639___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -37424,48 +37412,48 @@ void parser___ReduceAction639___action(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11074 */
+  /* ./parser//parser.nit:11072 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11075 */
+  /* ./parser//parser.nit:11073 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11076 */
+  /* ./parser//parser.nit:11074 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11077 */
+  /* ./parser//parser.nit:11075 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11078 */
+  /* ./parser//parser.nit:11076 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11079 */
+  /* ./parser//parser.nit:11077 */
   fra.me.REG[7] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11081 */
+  /* ./parser//parser.nit:11079 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11081);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11079);
   }
-  /* ./parser//parser.nit:11083 */
+  /* ./parser//parser.nit:11081 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TId, ID_TId)) /*cast nullable TId*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11083);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11081);
   }
-  /* ./parser//parser.nit:11085 */
+  /* ./parser//parser.nit:11083 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11085);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11083);
   }
-  /* ./parser//parser.nit:11086 */
+  /* ./parser//parser.nit:11084 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:11087 */
+  /* ./parser//parser.nit:11085 */
   fra.me.REG[7] = NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], fra.me.REG[7]);
-  /* ./parser//parser.nit:11093 */
+  /* ./parser//parser.nit:11091 */
   fra.me.REG[2] = fra.me.REG[7];
-  /* ./parser//parser.nit:11094 */
+  /* ./parser//parser.nit:11092 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction639____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11094);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11092);
   }
   REGB0 = ATTR_parser___ReduceAction639____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37481,7 +37469,7 @@ void parser___ReduceAction639___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos355]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11097;
+  fra.me.line = 11095;
   fra.me.meth = LOCATE_parser___ReduceAction639___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37489,7 +37477,7 @@ void parser___ReduceAction639___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11097 */
+  /* ./parser//parser.nit:11095 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction639____goto(fra.me.REG[1]) = REGB0;
@@ -37503,7 +37491,7 @@ void parser___ReduceAction642___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11101;
+  fra.me.line = 11099;
   fra.me.meth = LOCATE_parser___ReduceAction642___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -37516,46 +37504,46 @@ void parser___ReduceAction642___action(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11103 */
+  /* ./parser//parser.nit:11101 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11104 */
+  /* ./parser//parser.nit:11102 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11105 */
+  /* ./parser//parser.nit:11103 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11106 */
+  /* ./parser//parser.nit:11104 */
   fra.me.REG[5] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11107 */
+  /* ./parser//parser.nit:11105 */
   fra.me.REG[6] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11109 */
+  /* ./parser//parser.nit:11107 */
   REGB0 = TAG_Bool((fra.me.REG[5]==NIT_NULL) || VAL_ISA(fra.me.REG[5], COLOR_AExpr, ID_AExpr)) /*cast nullable AExpr*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11109);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11107);
   }
-  /* ./parser//parser.nit:11111 */
+  /* ./parser//parser.nit:11109 */
   REGB0 = TAG_Bool((fra.me.REG[4]==NIT_NULL) || VAL_ISA(fra.me.REG[4], COLOR_TKwinit, ID_TKwinit)) /*cast nullable TKwinit*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11111);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11109);
   }
-  /* ./parser//parser.nit:11113 */
+  /* ./parser//parser.nit:11111 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11113);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11111);
   }
-  /* ./parser//parser.nit:11114 */
+  /* ./parser//parser.nit:11112 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[3]);
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./parser//parser.nit:11115 */
+  /* ./parser//parser.nit:11113 */
   fra.me.REG[6] = NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-  /* ./parser//parser.nit:11120 */
+  /* ./parser//parser.nit:11118 */
   fra.me.REG[2] = fra.me.REG[6];
-  /* ./parser//parser.nit:11121 */
+  /* ./parser//parser.nit:11119 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction642____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11121);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11119);
   }
   REGB0 = ATTR_parser___ReduceAction642____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37571,7 +37559,7 @@ void parser___ReduceAction642___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos356]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11124;
+  fra.me.line = 11122;
   fra.me.meth = LOCATE_parser___ReduceAction642___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37579,7 +37567,7 @@ void parser___ReduceAction642___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11124 */
+  /* ./parser//parser.nit:11122 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction642____goto(fra.me.REG[1]) = REGB0;
@@ -37593,7 +37581,7 @@ void parser___ReduceAction655___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11128;
+  fra.me.line = 11126;
   fra.me.meth = LOCATE_parser___ReduceAction655___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37603,21 +37591,21 @@ void parser___ReduceAction655___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11130 */
+  /* ./parser//parser.nit:11128 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11131 */
+  /* ./parser//parser.nit:11129 */
+  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./parser//parser.nit:11130 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11132 */
+  /* ./parser//parser.nit:11131 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
   /* ./parser//parser.nit:11133 */
-  fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11135 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:11136 */
+  /* ./parser//parser.nit:11134 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction655____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11136);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11134);
   }
   REGB0 = ATTR_parser___ReduceAction655____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37633,7 +37621,7 @@ void parser___ReduceAction655___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos357]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11139;
+  fra.me.line = 11137;
   fra.me.meth = LOCATE_parser___ReduceAction655___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37641,7 +37629,7 @@ void parser___ReduceAction655___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11139 */
+  /* ./parser//parser.nit:11137 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction655____goto(fra.me.REG[1]) = REGB0;
@@ -37655,7 +37643,7 @@ void parser___ReduceAction656___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11143;
+  fra.me.line = 11141;
   fra.me.meth = LOCATE_parser___ReduceAction656___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -37665,17 +37653,17 @@ void parser___ReduceAction656___action(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11145 */
+  /* ./parser//parser.nit:11143 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11146 */
+  /* ./parser//parser.nit:11144 */
   fra.me.REG[3] = NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr();
-  /* ./parser//parser.nit:11148 */
+  /* ./parser//parser.nit:11146 */
   fra.me.REG[2] = fra.me.REG[3];
-  /* ./parser//parser.nit:11149 */
+  /* ./parser//parser.nit:11147 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction656____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11149);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11147);
   }
   REGB0 = ATTR_parser___ReduceAction656____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37691,7 +37679,7 @@ void parser___ReduceAction656___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos358]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11152;
+  fra.me.line = 11150;
   fra.me.meth = LOCATE_parser___ReduceAction656___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37699,7 +37687,7 @@ void parser___ReduceAction656___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11152 */
+  /* ./parser//parser.nit:11150 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction656____goto(fra.me.REG[1]) = REGB0;
@@ -37714,7 +37702,7 @@ void parser___ReduceAction663___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11156;
+  fra.me.line = 11154;
   fra.me.meth = LOCATE_parser___ReduceAction663___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -37725,13 +37713,13 @@ void parser___ReduceAction663___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11158 */
+  /* ./parser//parser.nit:11156 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11159 */
+  /* ./parser//parser.nit:11157 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11160 */
+  /* ./parser//parser.nit:11158 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11162 */
+  /* ./parser//parser.nit:11160 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -37746,16 +37734,16 @@ void parser___ReduceAction663___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11163 */
+    /* ./parser//parser.nit:11161 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11165 */
+  /* ./parser//parser.nit:11163 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11166 */
+  /* ./parser//parser.nit:11164 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction663____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11166);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11164);
   }
   REGB0 = ATTR_parser___ReduceAction663____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37771,7 +37759,7 @@ void parser___ReduceAction663___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos359]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11169;
+  fra.me.line = 11167;
   fra.me.meth = LOCATE_parser___ReduceAction663___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37779,7 +37767,7 @@ void parser___ReduceAction663___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11169 */
+  /* ./parser//parser.nit:11167 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction663____goto(fra.me.REG[1]) = REGB0;
@@ -37794,7 +37782,7 @@ void parser___ReduceAction664___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11173;
+  fra.me.line = 11171;
   fra.me.meth = LOCATE_parser___ReduceAction664___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -37806,24 +37794,24 @@ void parser___ReduceAction664___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11175 */
+  /* ./parser//parser.nit:11173 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11176 */
+  /* ./parser//parser.nit:11174 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11177 */
+  /* ./parser//parser.nit:11175 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11178 */
+  /* ./parser//parser.nit:11176 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11180 */
+  /* ./parser//parser.nit:11178 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11180);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11178);
   }
-  /* ./parser//parser.nit:11182 */
+  /* ./parser//parser.nit:11180 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11183 */
+  /* ./parser//parser.nit:11181 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -37838,16 +37826,16 @@ void parser___ReduceAction664___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11184 */
+    /* ./parser//parser.nit:11182 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11186 */
+  /* ./parser//parser.nit:11184 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11187 */
+  /* ./parser//parser.nit:11185 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction664____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11187);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11185);
   }
   REGB0 = ATTR_parser___ReduceAction664____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37863,7 +37851,7 @@ void parser___ReduceAction664___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos360]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11190;
+  fra.me.line = 11188;
   fra.me.meth = LOCATE_parser___ReduceAction664___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37871,7 +37859,7 @@ void parser___ReduceAction664___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11190 */
+  /* ./parser//parser.nit:11188 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction664____goto(fra.me.REG[1]) = REGB0;
@@ -37886,7 +37874,7 @@ void parser___ReduceAction665___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11194;
+  fra.me.line = 11192;
   fra.me.meth = LOCATE_parser___ReduceAction665___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -37897,13 +37885,13 @@ void parser___ReduceAction665___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11196 */
+  /* ./parser//parser.nit:11194 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11197 */
+  /* ./parser//parser.nit:11195 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11198 */
+  /* ./parser//parser.nit:11196 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11200 */
+  /* ./parser//parser.nit:11198 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -37918,16 +37906,16 @@ void parser___ReduceAction665___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11201 */
+    /* ./parser//parser.nit:11199 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11203 */
+  /* ./parser//parser.nit:11201 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11204 */
+  /* ./parser//parser.nit:11202 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction665____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11204);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11202);
   }
   REGB0 = ATTR_parser___ReduceAction665____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -37943,7 +37931,7 @@ void parser___ReduceAction665___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos361]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11207;
+  fra.me.line = 11205;
   fra.me.meth = LOCATE_parser___ReduceAction665___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37951,7 +37939,7 @@ void parser___ReduceAction665___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11207 */
+  /* ./parser//parser.nit:11205 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction665____goto(fra.me.REG[1]) = REGB0;
@@ -37966,7 +37954,7 @@ void parser___ReduceAction666___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11211;
+  fra.me.line = 11209;
   fra.me.meth = LOCATE_parser___ReduceAction666___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -37978,24 +37966,24 @@ void parser___ReduceAction666___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11213 */
+  /* ./parser//parser.nit:11211 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11214 */
+  /* ./parser//parser.nit:11212 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11215 */
+  /* ./parser//parser.nit:11213 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11216 */
+  /* ./parser//parser.nit:11214 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11218 */
+  /* ./parser//parser.nit:11216 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11218);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11216);
   }
-  /* ./parser//parser.nit:11220 */
+  /* ./parser//parser.nit:11218 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11221 */
+  /* ./parser//parser.nit:11219 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38010,16 +37998,16 @@ void parser___ReduceAction666___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11222 */
+    /* ./parser//parser.nit:11220 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11224 */
+  /* ./parser//parser.nit:11222 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11225 */
+  /* ./parser//parser.nit:11223 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction666____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11225);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11223);
   }
   REGB0 = ATTR_parser___ReduceAction666____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38035,7 +38023,7 @@ void parser___ReduceAction666___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos362]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11228;
+  fra.me.line = 11226;
   fra.me.meth = LOCATE_parser___ReduceAction666___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38043,7 +38031,7 @@ void parser___ReduceAction666___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11228 */
+  /* ./parser//parser.nit:11226 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction666____goto(fra.me.REG[1]) = REGB0;
@@ -38058,7 +38046,7 @@ void parser___ReduceAction667___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11232;
+  fra.me.line = 11230;
   fra.me.meth = LOCATE_parser___ReduceAction667___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -38069,13 +38057,13 @@ void parser___ReduceAction667___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11234 */
+  /* ./parser//parser.nit:11232 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11235 */
+  /* ./parser//parser.nit:11233 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11236 */
+  /* ./parser//parser.nit:11234 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11238 */
+  /* ./parser//parser.nit:11236 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38090,16 +38078,16 @@ void parser___ReduceAction667___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11239 */
+    /* ./parser//parser.nit:11237 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11241 */
+  /* ./parser//parser.nit:11239 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11242 */
+  /* ./parser//parser.nit:11240 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction667____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11242);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11240);
   }
   REGB0 = ATTR_parser___ReduceAction667____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38115,7 +38103,7 @@ void parser___ReduceAction667___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos363]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11245;
+  fra.me.line = 11243;
   fra.me.meth = LOCATE_parser___ReduceAction667___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38123,7 +38111,7 @@ void parser___ReduceAction667___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11245 */
+  /* ./parser//parser.nit:11243 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction667____goto(fra.me.REG[1]) = REGB0;
@@ -38138,7 +38126,7 @@ void parser___ReduceAction668___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11249;
+  fra.me.line = 11247;
   fra.me.meth = LOCATE_parser___ReduceAction668___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -38150,24 +38138,24 @@ void parser___ReduceAction668___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11251 */
+  /* ./parser//parser.nit:11249 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11252 */
+  /* ./parser//parser.nit:11250 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11253 */
+  /* ./parser//parser.nit:11251 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11254 */
+  /* ./parser//parser.nit:11252 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11256 */
+  /* ./parser//parser.nit:11254 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11256);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11254);
   }
-  /* ./parser//parser.nit:11258 */
+  /* ./parser//parser.nit:11256 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11259 */
+  /* ./parser//parser.nit:11257 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38182,16 +38170,16 @@ void parser___ReduceAction668___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11260 */
+    /* ./parser//parser.nit:11258 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11262 */
+  /* ./parser//parser.nit:11260 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11263 */
+  /* ./parser//parser.nit:11261 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction668____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11263);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11261);
   }
   REGB0 = ATTR_parser___ReduceAction668____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38207,7 +38195,7 @@ void parser___ReduceAction668___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos364]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11266;
+  fra.me.line = 11264;
   fra.me.meth = LOCATE_parser___ReduceAction668___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38215,7 +38203,7 @@ void parser___ReduceAction668___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11266 */
+  /* ./parser//parser.nit:11264 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction668____goto(fra.me.REG[1]) = REGB0;
@@ -38230,7 +38218,7 @@ void parser___ReduceAction669___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11270;
+  fra.me.line = 11268;
   fra.me.meth = LOCATE_parser___ReduceAction669___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -38241,13 +38229,13 @@ void parser___ReduceAction669___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11272 */
+  /* ./parser//parser.nit:11270 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11273 */
+  /* ./parser//parser.nit:11271 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11274 */
+  /* ./parser//parser.nit:11272 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11276 */
+  /* ./parser//parser.nit:11274 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38262,16 +38250,16 @@ void parser___ReduceAction669___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11277 */
+    /* ./parser//parser.nit:11275 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11279 */
+  /* ./parser//parser.nit:11277 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11280 */
+  /* ./parser//parser.nit:11278 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction669____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11280);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11278);
   }
   REGB0 = ATTR_parser___ReduceAction669____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38287,7 +38275,7 @@ void parser___ReduceAction669___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos365]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11283;
+  fra.me.line = 11281;
   fra.me.meth = LOCATE_parser___ReduceAction669___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38295,7 +38283,7 @@ void parser___ReduceAction669___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11283 */
+  /* ./parser//parser.nit:11281 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction669____goto(fra.me.REG[1]) = REGB0;
@@ -38310,7 +38298,7 @@ void parser___ReduceAction670___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11287;
+  fra.me.line = 11285;
   fra.me.meth = LOCATE_parser___ReduceAction670___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -38322,24 +38310,24 @@ void parser___ReduceAction670___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11289 */
+  /* ./parser//parser.nit:11287 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11290 */
+  /* ./parser//parser.nit:11288 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11291 */
+  /* ./parser//parser.nit:11289 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11292 */
+  /* ./parser//parser.nit:11290 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11294 */
+  /* ./parser//parser.nit:11292 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11294);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11292);
   }
-  /* ./parser//parser.nit:11296 */
+  /* ./parser//parser.nit:11294 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11297 */
+  /* ./parser//parser.nit:11295 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38354,16 +38342,16 @@ void parser___ReduceAction670___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11298 */
+    /* ./parser//parser.nit:11296 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11300 */
+  /* ./parser//parser.nit:11298 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11301 */
+  /* ./parser//parser.nit:11299 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction670____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11301);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11299);
   }
   REGB0 = ATTR_parser___ReduceAction670____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38379,7 +38367,7 @@ void parser___ReduceAction670___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos366]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11304;
+  fra.me.line = 11302;
   fra.me.meth = LOCATE_parser___ReduceAction670___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38387,7 +38375,7 @@ void parser___ReduceAction670___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11304 */
+  /* ./parser//parser.nit:11302 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction670____goto(fra.me.REG[1]) = REGB0;
@@ -38402,7 +38390,7 @@ void parser___ReduceAction673___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11308;
+  fra.me.line = 11306;
   fra.me.meth = LOCATE_parser___ReduceAction673___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -38413,13 +38401,13 @@ void parser___ReduceAction673___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11310 */
+  /* ./parser//parser.nit:11308 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11311 */
+  /* ./parser//parser.nit:11309 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11312 */
+  /* ./parser//parser.nit:11310 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11314 */
+  /* ./parser//parser.nit:11312 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38434,16 +38422,16 @@ void parser___ReduceAction673___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11315 */
+    /* ./parser//parser.nit:11313 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11317 */
+  /* ./parser//parser.nit:11315 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11318 */
+  /* ./parser//parser.nit:11316 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction673____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11318);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11316);
   }
   REGB0 = ATTR_parser___ReduceAction673____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38459,7 +38447,7 @@ void parser___ReduceAction673___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos367]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11321;
+  fra.me.line = 11319;
   fra.me.meth = LOCATE_parser___ReduceAction673___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38467,7 +38455,7 @@ void parser___ReduceAction673___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11321 */
+  /* ./parser//parser.nit:11319 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction673____goto(fra.me.REG[1]) = REGB0;
@@ -38482,7 +38470,7 @@ void parser___ReduceAction674___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11325;
+  fra.me.line = 11323;
   fra.me.meth = LOCATE_parser___ReduceAction674___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -38494,24 +38482,24 @@ void parser___ReduceAction674___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11327 */
+  /* ./parser//parser.nit:11325 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11328 */
+  /* ./parser//parser.nit:11326 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11329 */
+  /* ./parser//parser.nit:11327 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11330 */
+  /* ./parser//parser.nit:11328 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11332 */
+  /* ./parser//parser.nit:11330 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11332);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11330);
   }
-  /* ./parser//parser.nit:11334 */
+  /* ./parser//parser.nit:11332 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11335 */
+  /* ./parser//parser.nit:11333 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38526,16 +38514,16 @@ void parser___ReduceAction674___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11336 */
+    /* ./parser//parser.nit:11334 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11338 */
+  /* ./parser//parser.nit:11336 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11339 */
+  /* ./parser//parser.nit:11337 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction674____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11339);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11337);
   }
   REGB0 = ATTR_parser___ReduceAction674____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38551,7 +38539,7 @@ void parser___ReduceAction674___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos368]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11342;
+  fra.me.line = 11340;
   fra.me.meth = LOCATE_parser___ReduceAction674___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38559,7 +38547,7 @@ void parser___ReduceAction674___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11342 */
+  /* ./parser//parser.nit:11340 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction674____goto(fra.me.REG[1]) = REGB0;
@@ -38574,7 +38562,7 @@ void parser___ReduceAction675___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11346;
+  fra.me.line = 11344;
   fra.me.meth = LOCATE_parser___ReduceAction675___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -38585,13 +38573,13 @@ void parser___ReduceAction675___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11348 */
+  /* ./parser//parser.nit:11346 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11349 */
+  /* ./parser//parser.nit:11347 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11350 */
+  /* ./parser//parser.nit:11348 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11352 */
+  /* ./parser//parser.nit:11350 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38606,16 +38594,16 @@ void parser___ReduceAction675___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11353 */
+    /* ./parser//parser.nit:11351 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11355 */
+  /* ./parser//parser.nit:11353 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11356 */
+  /* ./parser//parser.nit:11354 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction675____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11356);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11354);
   }
   REGB0 = ATTR_parser___ReduceAction675____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38631,7 +38619,7 @@ void parser___ReduceAction675___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos369]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11359;
+  fra.me.line = 11357;
   fra.me.meth = LOCATE_parser___ReduceAction675___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38639,7 +38627,7 @@ void parser___ReduceAction675___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11359 */
+  /* ./parser//parser.nit:11357 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction675____goto(fra.me.REG[1]) = REGB0;
@@ -38654,7 +38642,7 @@ void parser___ReduceAction676___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11363;
+  fra.me.line = 11361;
   fra.me.meth = LOCATE_parser___ReduceAction676___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -38666,24 +38654,24 @@ void parser___ReduceAction676___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11365 */
+  /* ./parser//parser.nit:11363 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11366 */
+  /* ./parser//parser.nit:11364 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11367 */
+  /* ./parser//parser.nit:11365 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11368 */
+  /* ./parser//parser.nit:11366 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11370 */
+  /* ./parser//parser.nit:11368 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11370);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11368);
   }
-  /* ./parser//parser.nit:11372 */
+  /* ./parser//parser.nit:11370 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11373 */
+  /* ./parser//parser.nit:11371 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38698,16 +38686,16 @@ void parser___ReduceAction676___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11374 */
+    /* ./parser//parser.nit:11372 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11376 */
+  /* ./parser//parser.nit:11374 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11377 */
+  /* ./parser//parser.nit:11375 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction676____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11377);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11375);
   }
   REGB0 = ATTR_parser___ReduceAction676____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38723,7 +38711,7 @@ void parser___ReduceAction676___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos370]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11380;
+  fra.me.line = 11378;
   fra.me.meth = LOCATE_parser___ReduceAction676___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38731,7 +38719,7 @@ void parser___ReduceAction676___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11380 */
+  /* ./parser//parser.nit:11378 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction676____goto(fra.me.REG[1]) = REGB0;
@@ -38746,7 +38734,7 @@ void parser___ReduceAction677___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11384;
+  fra.me.line = 11382;
   fra.me.meth = LOCATE_parser___ReduceAction677___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -38757,13 +38745,13 @@ void parser___ReduceAction677___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11386 */
+  /* ./parser//parser.nit:11384 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11387 */
+  /* ./parser//parser.nit:11385 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11388 */
+  /* ./parser//parser.nit:11386 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11390 */
+  /* ./parser//parser.nit:11388 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38778,16 +38766,16 @@ void parser___ReduceAction677___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11391 */
+    /* ./parser//parser.nit:11389 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11393 */
+  /* ./parser//parser.nit:11391 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11394 */
+  /* ./parser//parser.nit:11392 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction677____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11394);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11392);
   }
   REGB0 = ATTR_parser___ReduceAction677____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38803,7 +38791,7 @@ void parser___ReduceAction677___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos371]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11397;
+  fra.me.line = 11395;
   fra.me.meth = LOCATE_parser___ReduceAction677___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38811,7 +38799,7 @@ void parser___ReduceAction677___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11397 */
+  /* ./parser//parser.nit:11395 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction677____goto(fra.me.REG[1]) = REGB0;
@@ -38826,7 +38814,7 @@ void parser___ReduceAction678___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11401;
+  fra.me.line = 11399;
   fra.me.meth = LOCATE_parser___ReduceAction678___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -38838,24 +38826,24 @@ void parser___ReduceAction678___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11403 */
+  /* ./parser//parser.nit:11401 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11404 */
+  /* ./parser//parser.nit:11402 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11405 */
+  /* ./parser//parser.nit:11403 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11406 */
+  /* ./parser//parser.nit:11404 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11408 */
+  /* ./parser//parser.nit:11406 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11408);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11406);
   }
-  /* ./parser//parser.nit:11410 */
+  /* ./parser//parser.nit:11408 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11411 */
+  /* ./parser//parser.nit:11409 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38870,16 +38858,16 @@ void parser___ReduceAction678___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11412 */
+    /* ./parser//parser.nit:11410 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11414 */
+  /* ./parser//parser.nit:11412 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11415 */
+  /* ./parser//parser.nit:11413 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction678____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11415);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11413);
   }
   REGB0 = ATTR_parser___ReduceAction678____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38895,7 +38883,7 @@ void parser___ReduceAction678___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos372]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11418;
+  fra.me.line = 11416;
   fra.me.meth = LOCATE_parser___ReduceAction678___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38903,7 +38891,7 @@ void parser___ReduceAction678___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11418 */
+  /* ./parser//parser.nit:11416 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction678____goto(fra.me.REG[1]) = REGB0;
@@ -38918,7 +38906,7 @@ void parser___ReduceAction680___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11422;
+  fra.me.line = 11420;
   fra.me.meth = LOCATE_parser___ReduceAction680___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -38930,24 +38918,24 @@ void parser___ReduceAction680___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11424 */
+  /* ./parser//parser.nit:11422 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11425 */
+  /* ./parser//parser.nit:11423 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11426 */
+  /* ./parser//parser.nit:11424 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11427 */
+  /* ./parser//parser.nit:11425 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11429 */
+  /* ./parser//parser.nit:11427 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11429);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11427);
   }
-  /* ./parser//parser.nit:11431 */
+  /* ./parser//parser.nit:11429 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11432 */
+  /* ./parser//parser.nit:11430 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -38962,16 +38950,16 @@ void parser___ReduceAction680___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11433 */
+    /* ./parser//parser.nit:11431 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11435 */
+  /* ./parser//parser.nit:11433 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11436 */
+  /* ./parser//parser.nit:11434 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction680____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11436);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11434);
   }
   REGB0 = ATTR_parser___ReduceAction680____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -38987,7 +38975,7 @@ void parser___ReduceAction680___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos373]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11439;
+  fra.me.line = 11437;
   fra.me.meth = LOCATE_parser___ReduceAction680___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -38995,7 +38983,7 @@ void parser___ReduceAction680___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11439 */
+  /* ./parser//parser.nit:11437 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction680____goto(fra.me.REG[1]) = REGB0;
@@ -39010,7 +38998,7 @@ void parser___ReduceAction682___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11443;
+  fra.me.line = 11441;
   fra.me.meth = LOCATE_parser___ReduceAction682___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -39022,24 +39010,24 @@ void parser___ReduceAction682___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11445 */
+  /* ./parser//parser.nit:11443 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11446 */
+  /* ./parser//parser.nit:11444 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11447 */
+  /* ./parser//parser.nit:11445 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11448 */
+  /* ./parser//parser.nit:11446 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11450 */
+  /* ./parser//parser.nit:11448 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11450);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11448);
   }
-  /* ./parser//parser.nit:11452 */
+  /* ./parser//parser.nit:11450 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11453 */
+  /* ./parser//parser.nit:11451 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39054,16 +39042,16 @@ void parser___ReduceAction682___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11454 */
+    /* ./parser//parser.nit:11452 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11456 */
+  /* ./parser//parser.nit:11454 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11457 */
+  /* ./parser//parser.nit:11455 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction682____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11457);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11455);
   }
   REGB0 = ATTR_parser___ReduceAction682____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39079,7 +39067,7 @@ void parser___ReduceAction682___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos374]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11460;
+  fra.me.line = 11458;
   fra.me.meth = LOCATE_parser___ReduceAction682___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39087,7 +39075,7 @@ void parser___ReduceAction682___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11460 */
+  /* ./parser//parser.nit:11458 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction682____goto(fra.me.REG[1]) = REGB0;
@@ -39101,7 +39089,7 @@ void parser___ReduceAction684___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11464;
+  fra.me.line = 11462;
   fra.me.meth = LOCATE_parser___ReduceAction684___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -39113,39 +39101,39 @@ void parser___ReduceAction684___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11466 */
+  /* ./parser//parser.nit:11464 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11467 */
+  /* ./parser//parser.nit:11465 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11468 */
+  /* ./parser//parser.nit:11466 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11469 */
+  /* ./parser//parser.nit:11467 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11471 */
+  /* ./parser//parser.nit:11469 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11471);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11469);
   }
-  /* ./parser//parser.nit:11473 */
+  /* ./parser//parser.nit:11471 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11473);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11471);
   }
-  /* ./parser//parser.nit:11474 */
+  /* ./parser//parser.nit:11472 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11475 */
+  /* ./parser//parser.nit:11473 */
   fra.me.REG[3] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[3]);
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./parser//parser.nit:11476 */
+  /* ./parser//parser.nit:11474 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11477 */
+  /* ./parser//parser.nit:11475 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction684____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11477);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11475);
   }
   REGB0 = ATTR_parser___ReduceAction684____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39161,7 +39149,7 @@ void parser___ReduceAction684___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos375]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11480;
+  fra.me.line = 11478;
   fra.me.meth = LOCATE_parser___ReduceAction684___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39169,7 +39157,7 @@ void parser___ReduceAction684___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11480 */
+  /* ./parser//parser.nit:11478 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction684____goto(fra.me.REG[1]) = REGB0;
@@ -39184,7 +39172,7 @@ void parser___ReduceAction688___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11484;
+  fra.me.line = 11482;
   fra.me.meth = LOCATE_parser___ReduceAction688___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -39196,24 +39184,24 @@ void parser___ReduceAction688___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11486 */
+  /* ./parser//parser.nit:11484 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11487 */
+  /* ./parser//parser.nit:11485 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11488 */
+  /* ./parser//parser.nit:11486 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11489 */
+  /* ./parser//parser.nit:11487 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11491 */
+  /* ./parser//parser.nit:11489 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11491);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11489);
   }
-  /* ./parser//parser.nit:11493 */
+  /* ./parser//parser.nit:11491 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11494 */
+  /* ./parser//parser.nit:11492 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39228,16 +39216,16 @@ void parser___ReduceAction688___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11495 */
+    /* ./parser//parser.nit:11493 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11497 */
+  /* ./parser//parser.nit:11495 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11498 */
+  /* ./parser//parser.nit:11496 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction688____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11498);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11496);
   }
   REGB0 = ATTR_parser___ReduceAction688____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39253,7 +39241,7 @@ void parser___ReduceAction688___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos376]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11501;
+  fra.me.line = 11499;
   fra.me.meth = LOCATE_parser___ReduceAction688___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39261,7 +39249,7 @@ void parser___ReduceAction688___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11501 */
+  /* ./parser//parser.nit:11499 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction688____goto(fra.me.REG[1]) = REGB0;
@@ -39276,7 +39264,7 @@ void parser___ReduceAction689___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11505;
+  fra.me.line = 11503;
   fra.me.meth = LOCATE_parser___ReduceAction689___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -39287,13 +39275,13 @@ void parser___ReduceAction689___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11507 */
+  /* ./parser//parser.nit:11505 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11508 */
+  /* ./parser//parser.nit:11506 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11509 */
+  /* ./parser//parser.nit:11507 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11511 */
+  /* ./parser//parser.nit:11509 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39308,16 +39296,16 @@ void parser___ReduceAction689___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11512 */
+    /* ./parser//parser.nit:11510 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11514 */
+  /* ./parser//parser.nit:11512 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11515 */
+  /* ./parser//parser.nit:11513 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction689____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11515);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11513);
   }
   REGB0 = ATTR_parser___ReduceAction689____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39333,7 +39321,7 @@ void parser___ReduceAction689___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos377]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11518;
+  fra.me.line = 11516;
   fra.me.meth = LOCATE_parser___ReduceAction689___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39341,7 +39329,7 @@ void parser___ReduceAction689___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11518 */
+  /* ./parser//parser.nit:11516 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction689____goto(fra.me.REG[1]) = REGB0;
@@ -39356,7 +39344,7 @@ void parser___ReduceAction690___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11522;
+  fra.me.line = 11520;
   fra.me.meth = LOCATE_parser___ReduceAction690___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -39368,24 +39356,24 @@ void parser___ReduceAction690___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11524 */
+  /* ./parser//parser.nit:11522 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11525 */
+  /* ./parser//parser.nit:11523 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11526 */
+  /* ./parser//parser.nit:11524 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11527 */
+  /* ./parser//parser.nit:11525 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11529 */
+  /* ./parser//parser.nit:11527 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11529);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11527);
   }
-  /* ./parser//parser.nit:11531 */
+  /* ./parser//parser.nit:11529 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11532 */
+  /* ./parser//parser.nit:11530 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39400,16 +39388,16 @@ void parser___ReduceAction690___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11533 */
+    /* ./parser//parser.nit:11531 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11535 */
+  /* ./parser//parser.nit:11533 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11536 */
+  /* ./parser//parser.nit:11534 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction690____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11536);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11534);
   }
   REGB0 = ATTR_parser___ReduceAction690____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39425,7 +39413,7 @@ void parser___ReduceAction690___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos378]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11539;
+  fra.me.line = 11537;
   fra.me.meth = LOCATE_parser___ReduceAction690___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39433,7 +39421,7 @@ void parser___ReduceAction690___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11539 */
+  /* ./parser//parser.nit:11537 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction690____goto(fra.me.REG[1]) = REGB0;
@@ -39448,7 +39436,7 @@ void parser___ReduceAction691___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11543;
+  fra.me.line = 11541;
   fra.me.meth = LOCATE_parser___ReduceAction691___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -39459,13 +39447,13 @@ void parser___ReduceAction691___action(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11545 */
+  /* ./parser//parser.nit:11543 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11546 */
+  /* ./parser//parser.nit:11544 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11547 */
+  /* ./parser//parser.nit:11545 */
   fra.me.REG[4] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11549 */
+  /* ./parser//parser.nit:11547 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39480,16 +39468,16 @@ void parser___ReduceAction691___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11550 */
+    /* ./parser//parser.nit:11548 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11552 */
+  /* ./parser//parser.nit:11550 */
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./parser//parser.nit:11553 */
+  /* ./parser//parser.nit:11551 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction691____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11553);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11551);
   }
   REGB0 = ATTR_parser___ReduceAction691____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39505,7 +39493,7 @@ void parser___ReduceAction691___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos379]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11556;
+  fra.me.line = 11554;
   fra.me.meth = LOCATE_parser___ReduceAction691___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39513,7 +39501,7 @@ void parser___ReduceAction691___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11556 */
+  /* ./parser//parser.nit:11554 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction691____goto(fra.me.REG[1]) = REGB0;
@@ -39528,7 +39516,7 @@ void parser___ReduceAction692___action(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11560;
+  fra.me.line = 11558;
   fra.me.meth = LOCATE_parser___ReduceAction692___action;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -39540,24 +39528,24 @@ void parser___ReduceAction692___action(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./parser//parser.nit:11562 */
+  /* ./parser//parser.nit:11560 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./parser//parser.nit:11563 */
+  /* ./parser//parser.nit:11561 */
   fra.me.REG[3] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11564 */
+  /* ./parser//parser.nit:11562 */
   fra.me.REG[4] = CALL_parser___Parser___pop(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./parser//parser.nit:11565 */
+  /* ./parser//parser.nit:11563 */
   fra.me.REG[5] = NEW_Array_array___Array___init();
-  /* ./parser//parser.nit:11567 */
+  /* ./parser//parser.nit:11565 */
   REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_Array, ID_Array)) /*cast Array[Object]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_parser, 11567);
+    nit_abort("Assert failed", NULL, LOCATE_parser, 11565);
   }
-  /* ./parser//parser.nit:11569 */
+  /* ./parser//parser.nit:11567 */
   fra.me.REG[4] = CALL_parser___ReduceAction___concat(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[4]);
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./parser//parser.nit:11570 */
+  /* ./parser//parser.nit:11568 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -39572,16 +39560,16 @@ void parser___ReduceAction692___action(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./parser//parser.nit:11571 */
+    /* ./parser//parser.nit:11569 */
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
   }
-  /* ./parser//parser.nit:11573 */
+  /* ./parser//parser.nit:11571 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./parser//parser.nit:11574 */
+  /* ./parser//parser.nit:11572 */
   REGB0 = TAG_Bool(ATTR_parser___ReduceAction692____goto(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11574);
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_parser, 11572);
   }
   REGB0 = ATTR_parser___ReduceAction692____goto(fra.me.REG[0]);
   REGB0 = CALL_parser___Parser___go_to(fra.me.REG[1])(fra.me.REG[1], REGB0);
@@ -39597,7 +39585,7 @@ void parser___ReduceAction692___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos380]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser;
-  fra.me.line = 11577;
+  fra.me.line = 11575;
   fra.me.meth = LOCATE_parser___ReduceAction692___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -39605,7 +39593,7 @@ void parser___ReduceAction692___init(val_t p0, val_t p1, int* init_table){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./parser//parser.nit:11577 */
+  /* ./parser//parser.nit:11575 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_parser___ReduceAction___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_parser___ReduceAction692____goto(fra.me.REG[1]) = REGB0;
index db33da6..c104b36 100644 (file)
@@ -706,25 +706,25 @@ val_t parser_nodes___AInterfaceClasskind___n_kwinterface(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t parser_nodes___AUniversalClasskind___n_kwuniversal(val_t p0){
+val_t parser_nodes___AEnumClasskind___n_kwenum(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_nodes;
   fra.me.line = 395;
-  fra.me.meth = LOCATE_parser_nodes___AUniversalClasskind___n_kwuniversal;
+  fra.me.meth = LOCATE_parser_nodes___AEnumClasskind___n_kwenum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./parser//parser_nodes.nit:395 */
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwuniversal", LOCATE_parser_nodes, 395);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser_nodes, 395);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
index 971c44f..781fb61 100644 (file)
@@ -24,7 +24,7 @@ extern const classtable_elt_t VFT_TKwabstract[];
 
 extern const classtable_elt_t VFT_TKwinterface[];
 
-extern const classtable_elt_t VFT_TKwuniversal[];
+extern const classtable_elt_t VFT_TKwenum[];
 
 extern const classtable_elt_t VFT_TKwspecial[];
 
@@ -228,7 +228,7 @@ extern const classtable_elt_t VFT_AAbstractClasskind[];
 
 extern const classtable_elt_t VFT_AInterfaceClasskind[];
 
-extern const classtable_elt_t VFT_AUniversalClasskind[];
+extern const classtable_elt_t VFT_AEnumClasskind[];
 
 extern const classtable_elt_t VFT_AFormaldef[];
 
@@ -533,9 +533,9 @@ extern const int SFT_parser_nodes[];
 #define ID_TKwinterface (SFT_parser_nodes[28])
 #define COLOR_TKwinterface (SFT_parser_nodes[29])
 #define INIT_TABLE_POS_TKwinterface (SFT_parser_nodes[30] + 0)
-#define ID_TKwuniversal (SFT_parser_nodes[31])
-#define COLOR_TKwuniversal (SFT_parser_nodes[32])
-#define INIT_TABLE_POS_TKwuniversal (SFT_parser_nodes[33] + 0)
+#define ID_TKwenum (SFT_parser_nodes[31])
+#define COLOR_TKwenum (SFT_parser_nodes[32])
+#define INIT_TABLE_POS_TKwenum (SFT_parser_nodes[33] + 0)
 #define ID_TKwspecial (SFT_parser_nodes[34])
 #define COLOR_TKwspecial (SFT_parser_nodes[35])
 #define INIT_TABLE_POS_TKwspecial (SFT_parser_nodes[36] + 0)
@@ -899,11 +899,11 @@ extern const int SFT_parser_nodes[];
 #define ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(recv) ATTR(recv, (SFT_parser_nodes[348] + 0))
 #define INIT_TABLE_POS_AInterfaceClasskind (SFT_parser_nodes[349] + 0)
 #define CALL_parser_nodes___AInterfaceClasskind___n_kwinterface(recv) ((parser_nodes___AInterfaceClasskind___n_kwinterface_t)CALL((recv), (SFT_parser_nodes[349] + 1)))
-#define ID_AUniversalClasskind (SFT_parser_nodes[350])
-#define COLOR_AUniversalClasskind (SFT_parser_nodes[351])
-#define ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(recv) ATTR(recv, (SFT_parser_nodes[352] + 0))
-#define INIT_TABLE_POS_AUniversalClasskind (SFT_parser_nodes[353] + 0)
-#define CALL_parser_nodes___AUniversalClasskind___n_kwuniversal(recv) ((parser_nodes___AUniversalClasskind___n_kwuniversal_t)CALL((recv), (SFT_parser_nodes[353] + 1)))
+#define ID_AEnumClasskind (SFT_parser_nodes[350])
+#define COLOR_AEnumClasskind (SFT_parser_nodes[351])
+#define ATTR_parser_nodes___AEnumClasskind____n_kwenum(recv) ATTR(recv, (SFT_parser_nodes[352] + 0))
+#define INIT_TABLE_POS_AEnumClasskind (SFT_parser_nodes[353] + 0)
+#define CALL_parser_nodes___AEnumClasskind___n_kwenum(recv) ((parser_nodes___AEnumClasskind___n_kwenum_t)CALL((recv), (SFT_parser_nodes[353] + 1)))
 #define ID_AFormaldef (SFT_parser_nodes[354])
 #define COLOR_AFormaldef (SFT_parser_nodes[355])
 #define ATTR_parser_nodes___AFormaldef____n_id(recv) ATTR(recv, (SFT_parser_nodes[356] + 0))
@@ -1709,7 +1709,7 @@ val_t NEW_TKwimport_parser_nodes___ANode___init(val_t p0);
 val_t NEW_TKwclass_parser_nodes___ANode___init(val_t p0);
 val_t NEW_TKwabstract_parser_nodes___ANode___init(val_t p0);
 val_t NEW_TKwinterface_parser_nodes___ANode___init(val_t p0);
-val_t NEW_TKwuniversal_parser_nodes___ANode___init(val_t p0);
+val_t NEW_TKwenum_parser_nodes___ANode___init(val_t p0);
 val_t NEW_TKwspecial_parser_nodes___ANode___init(val_t p0);
 val_t NEW_TKwend_parser_nodes___ANode___init(val_t p0);
 val_t NEW_TKwmeth_parser_nodes___ANode___init(val_t p0);
@@ -1904,10 +1904,10 @@ static const char * const LOCATE_parser_nodes___AInterfaceClasskind___n_kwinterf
 val_t parser_nodes___AInterfaceClasskind___n_kwinterface(val_t p0);
 typedef val_t (*parser_nodes___AInterfaceClasskind___n_kwinterface_t)(val_t p0);
 val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0);
-static const char * const LOCATE_parser_nodes___AUniversalClasskind___n_kwuniversal = "parser_nodes::AUniversalClasskind::n_kwuniversal";
-val_t parser_nodes___AUniversalClasskind___n_kwuniversal(val_t p0);
-typedef val_t (*parser_nodes___AUniversalClasskind___n_kwuniversal_t)(val_t p0);
-val_t NEW_AUniversalClasskind_parser_nodes___ANode___init(val_t p0);
+static const char * const LOCATE_parser_nodes___AEnumClasskind___n_kwenum = "parser_nodes::AEnumClasskind::n_kwenum";
+val_t parser_nodes___AEnumClasskind___n_kwenum(val_t p0);
+typedef val_t (*parser_nodes___AEnumClasskind___n_kwenum_t)(val_t p0);
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0);
 static const char * const LOCATE_parser_nodes___AFormaldef___n_id = "parser_nodes::AFormaldef::n_id";
 val_t parser_nodes___AFormaldef___n_id(val_t p0);
 typedef val_t (*parser_nodes___AFormaldef___n_id_t)(val_t p0);
index 6e025f7..f75ca4c 100644 (file)
@@ -4253,15 +4253,15 @@ void parser_prod___AInterfaceClasskind___visit_all(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___empty_init(val_t p0, int* init_table){
-  int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AUniversalClasskind].i;
+void parser_prod___AEnumClasskind___empty_init(val_t p0, int* init_table){
+  int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEnumClasskind].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   if (init_table[itpos29]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_prod;
   fra.me.line = 783;
-  fra.me.meth = LOCATE_parser_prod___AUniversalClasskind___empty_init;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___empty_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
@@ -4270,8 +4270,8 @@ void parser_prod___AUniversalClasskind___empty_init(val_t p0, int* init_table){
   init_table[itpos29] = 1;
   return;
 }
-void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0, val_t p1, int* init_table){
-  int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AUniversalClasskind].i;
+void parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0, val_t p1, int* init_table){
+  int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AEnumClasskind].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
@@ -4279,7 +4279,7 @@ void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0, val_
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_prod;
   fra.me.line = 785;
-  fra.me.meth = LOCATE_parser_prod___AUniversalClasskind___init_auniversalclasskind;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___init_aenumclasskind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
@@ -4287,14 +4287,14 @@ void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./parser//parser_prod.nit:789 */
-  CALL_parser_prod___AUniversalClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser_prod___AEnumClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
   /* ./parser//parser_prod.nit:790 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser_prod, 790);
   }
-  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:791 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4305,7 +4305,7 @@ void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0, val_
   init_table[itpos30] = 1;
   return;
 }
-void parser_prod___AUniversalClasskind___replace_child(val_t p0, val_t p1, val_t p2){
+void parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
@@ -4313,7 +4313,7 @@ void parser_prod___AUniversalClasskind___replace_child(val_t p0, val_t p1, val_t
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_prod;
   fra.me.line = 794;
-  fra.me.meth = LOCATE_parser_prod___AUniversalClasskind___replace_child;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___replace_child;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
@@ -4324,12 +4324,12 @@ void parser_prod___AUniversalClasskind___replace_child(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   /* ./parser//parser_prod.nit:796 */
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwuniversal", LOCATE_parser_prod, 796);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser_prod, 796);
   }
-  fra.me.REG[3] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]);
+  fra.me.REG[3] = ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4359,13 +4359,13 @@ void parser_prod___AUniversalClasskind___replace_child(val_t p0, val_t p1, val_t
       }
       CALL_parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
       /* ./parser//parser_prod.nit:799 */
-      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
+      REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_TKwenum, ID_TKwenum)) /*cast TKwenum*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
         nit_abort("Assert failed", NULL, LOCATE_parser_prod, 799);
       }
       /* ./parser//parser_prod.nit:800 */
-      ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]) = fra.me.REG[2];
+      ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[2];
     } else {
       /* ./parser//parser_prod.nit:802 */
       nit_abort("Aborted", NULL, LOCATE_parser_prod, 802);
@@ -4377,14 +4377,14 @@ void parser_prod___AUniversalClasskind___replace_child(val_t p0, val_t p1, val_t
   stack_frame_head = fra.me.prev;
   return;
 }
-void parser_prod___AUniversalClasskind___visit_all(val_t p0, val_t p1){
+void parser_prod___AEnumClasskind___visit_all(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_parser_prod;
   fra.me.line = 808;
-  fra.me.meth = LOCATE_parser_prod___AUniversalClasskind___visit_all;
+  fra.me.meth = LOCATE_parser_prod___AEnumClasskind___visit_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
@@ -4392,12 +4392,12 @@ void parser_prod___AUniversalClasskind___visit_all(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./parser//parser_prod.nit:810 */
-  REGB0 = TAG_Bool(ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_n_kwuniversal", LOCATE_parser_prod, 810);
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_parser_prod, 810);
   }
-  fra.me.REG[0] = ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]);
   CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
index 56e2b6d..945ee80 100644 (file)
@@ -51,8 +51,8 @@ extern const int SFT_parser_prod[];
 #define CALL_parser_prod___AAbstractClasskind___init_aabstractclasskind(recv) ((parser_prod___AAbstractClasskind___init_aabstractclasskind_t)CALL((recv), (SFT_parser_prod[19] + 1)))
 #define CALL_parser_prod___AInterfaceClasskind___empty_init(recv) ((parser_prod___AInterfaceClasskind___empty_init_t)CALL((recv), (SFT_parser_prod[20] + 0)))
 #define CALL_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(recv) ((parser_prod___AInterfaceClasskind___init_ainterfaceclasskind_t)CALL((recv), (SFT_parser_prod[20] + 1)))
-#define CALL_parser_prod___AUniversalClasskind___empty_init(recv) ((parser_prod___AUniversalClasskind___empty_init_t)CALL((recv), (SFT_parser_prod[21] + 0)))
-#define CALL_parser_prod___AUniversalClasskind___init_auniversalclasskind(recv) ((parser_prod___AUniversalClasskind___init_auniversalclasskind_t)CALL((recv), (SFT_parser_prod[21] + 1)))
+#define CALL_parser_prod___AEnumClasskind___empty_init(recv) ((parser_prod___AEnumClasskind___empty_init_t)CALL((recv), (SFT_parser_prod[21] + 0)))
+#define CALL_parser_prod___AEnumClasskind___init_aenumclasskind(recv) ((parser_prod___AEnumClasskind___init_aenumclasskind_t)CALL((recv), (SFT_parser_prod[21] + 1)))
 #define CALL_parser_prod___AFormaldef___empty_init(recv) ((parser_prod___AFormaldef___empty_init_t)CALL((recv), (SFT_parser_prod[22] + 0)))
 #define CALL_parser_prod___AFormaldef___init_aformaldef(recv) ((parser_prod___AFormaldef___init_aformaldef_t)CALL((recv), (SFT_parser_prod[22] + 1)))
 #define CALL_parser_prod___ASuperclass___empty_init(recv) ((parser_prod___ASuperclass___empty_init_t)CALL((recv), (SFT_parser_prod[23] + 0)))
@@ -583,21 +583,21 @@ static const char * const LOCATE_parser_prod___AInterfaceClasskind___visit_all =
 void parser_prod___AInterfaceClasskind___visit_all(val_t p0, val_t p1);
 typedef void (*parser_prod___AInterfaceClasskind___visit_all_t)(val_t p0, val_t p1);
 val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0);
-static const char * const LOCATE_parser_prod___AUniversalClasskind___empty_init = "parser_prod::AUniversalClasskind::empty_init";
-void parser_prod___AUniversalClasskind___empty_init(val_t p0, int* init_table);
-typedef void (*parser_prod___AUniversalClasskind___empty_init_t)(val_t p0, int* init_table);
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init();
-static const char * const LOCATE_parser_prod___AUniversalClasskind___init_auniversalclasskind = "parser_prod::AUniversalClasskind::init_auniversalclasskind";
-void parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0, val_t p1, int* init_table);
-typedef void (*parser_prod___AUniversalClasskind___init_auniversalclasskind_t)(val_t p0, val_t p1, int* init_table);
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0);
-static const char * const LOCATE_parser_prod___AUniversalClasskind___replace_child = "parser_prod::AUniversalClasskind::(parser_prod::ANode::replace_child)";
-void parser_prod___AUniversalClasskind___replace_child(val_t p0, val_t p1, val_t p2);
-typedef void (*parser_prod___AUniversalClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_parser_prod___AUniversalClasskind___visit_all = "parser_prod::AUniversalClasskind::(parser_prod::ANode::visit_all)";
-void parser_prod___AUniversalClasskind___visit_all(val_t p0, val_t p1);
-typedef void (*parser_prod___AUniversalClasskind___visit_all_t)(val_t p0, val_t p1);
-val_t NEW_AUniversalClasskind_parser_nodes___ANode___init(val_t p0);
+static const char * const LOCATE_parser_prod___AEnumClasskind___empty_init = "parser_prod::AEnumClasskind::empty_init";
+void parser_prod___AEnumClasskind___empty_init(val_t p0, int* init_table);
+typedef void (*parser_prod___AEnumClasskind___empty_init_t)(val_t p0, int* init_table);
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init();
+static const char * const LOCATE_parser_prod___AEnumClasskind___init_aenumclasskind = "parser_prod::AEnumClasskind::init_aenumclasskind";
+void parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0, val_t p1, int* init_table);
+typedef void (*parser_prod___AEnumClasskind___init_aenumclasskind_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0);
+static const char * const LOCATE_parser_prod___AEnumClasskind___replace_child = "parser_prod::AEnumClasskind::(parser_prod::ANode::replace_child)";
+void parser_prod___AEnumClasskind___replace_child(val_t p0, val_t p1, val_t p2);
+typedef void (*parser_prod___AEnumClasskind___replace_child_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_parser_prod___AEnumClasskind___visit_all = "parser_prod::AEnumClasskind::(parser_prod::ANode::visit_all)";
+void parser_prod___AEnumClasskind___visit_all(val_t p0, val_t p1);
+typedef void (*parser_prod___AEnumClasskind___visit_all_t)(val_t p0, val_t p1);
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0);
 static const char * const LOCATE_parser_prod___AFormaldef___empty_init = "parser_prod::AFormaldef::empty_init";
 void parser_prod___AFormaldef___empty_init(val_t p0, int* init_table);
 typedef void (*parser_prod___AFormaldef___empty_init_t)(val_t p0, int* init_table);
index e577b5e..890e6f0 100644 (file)
@@ -19,11 +19,11 @@ val_t primitive_info___MMLocalClass___primitive_info(val_t p0){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:36 */
+  /* ./primitive_info.nit:35 */
   REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_primitive_info, 36);
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_primitive_info, 35);
   }
   REGB0 = ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]);
   REGB1 = TAG_Bool(true);
@@ -32,79 +32,79 @@ val_t primitive_info___MMLocalClass___primitive_info(val_t p0){
   } else {
     /* ./../lib/standard//kernel.nit:175 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./primitive_info.nit:36 */
+    /* ./primitive_info.nit:35 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     fra.me.REG[1] = ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]);
     goto label1;
   }
-  /* ./primitive_info.nit:38 */
+  /* ./primitive_info.nit:37 */
   if (!once_value_2) {
     fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_ctypes(fra.me.REG[0])(fra.me.REG[0]);
     once_value_2 = fra.me.REG[2];
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
   fra.me.REG[2] = fra.me.REG[2];
-  /* ./primitive_info.nit:39 */
+  /* ./primitive_info.nit:38 */
   fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   if (UNTAG_Bool(REGB2)) {
-    /* ./primitive_info.nit:40 */
+    /* ./primitive_info.nit:39 */
     fra.me.REG[3] = CALL_abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[3];
-    /* ./primitive_info.nit:41 */
+    /* ./primitive_info.nit:40 */
     REGB2 = TAG_Bool(true);
     ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB2;
-    /* ./primitive_info.nit:42 */
+    /* ./primitive_info.nit:41 */
     fra.me.REG[3] = ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]);
     fra.me.REG[1] = fra.me.REG[3];
     goto label1;
   }
-  /* ./primitive_info.nit:44 */
+  /* ./primitive_info.nit:43 */
   fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./primitive_info.nit:45 */
+  /* ./primitive_info.nit:44 */
   while(1) {
     REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB2)) {
-      /* ./primitive_info.nit:46 */
+      /* ./primitive_info.nit:45 */
       fra.me.REG[3] = CALL_abstract_collection___MapIterator___key(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./primitive_info.nit:47 */
+      /* ./primitive_info.nit:46 */
       fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       if (UNTAG_Bool(REGB2)) {
-        /* ./primitive_info.nit:48 */
+        /* ./primitive_info.nit:47 */
         fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[3] = CALL_abstractmetamodel___MMModule___class_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-        /* ./primitive_info.nit:49 */
+        /* ./primitive_info.nit:48 */
         fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
         REGB2 = CALL_partial_order___PartialOrderElement_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         if (UNTAG_Bool(REGB2)) {
-          /* ./primitive_info.nit:50 */
+          /* ./primitive_info.nit:49 */
           fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
           ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[3];
-          /* ./primitive_info.nit:51 */
+          /* ./primitive_info.nit:50 */
           REGB2 = TAG_Bool(true);
           ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB2;
-          /* ./primitive_info.nit:52 */
+          /* ./primitive_info.nit:51 */
           fra.me.REG[3] = ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]);
           fra.me.REG[1] = fra.me.REG[3];
           goto label1;
         }
       }
-      /* ./primitive_info.nit:55 */
+      /* ./primitive_info.nit:54 */
       CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
     } else {
-      /* ./primitive_info.nit:45 */
+      /* ./primitive_info.nit:44 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./primitive_info.nit:57 */
+  /* ./primitive_info.nit:56 */
   REGB2 = TAG_Bool(true);
   ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB2;
-  /* ./primitive_info.nit:58 */
+  /* ./primitive_info.nit:57 */
   fra.me.REG[1] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -134,7 +134,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   static val_t once_value_12; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 61;
+  fra.me.line = 60;
   fra.me.meth = LOCATE_primitive_info___MMLocalClass___primitive_ctypes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -146,9 +146,9 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:64 */
+  /* ./primitive_info.nit:63 */
   fra.me.REG[0] = NEW_HashMap_hash_collection___HashMap___init();
-  /* ./primitive_info.nit:65 */
+  /* ./primitive_info.nit:64 */
   REGB0 = TAG_Int(6);
   fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -205,7 +205,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   } else fra.me.REG[2] = once_value_6;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./primitive_info.nit:66 */
+  /* ./primitive_info.nit:65 */
   REGB0 = TAG_Int(6);
   fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
   REGB0 = TAG_Bool(true);
@@ -220,7 +220,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB0);
   REGB0 = TAG_Bool(false);
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB0);
-  /* ./primitive_info.nit:67 */
+  /* ./primitive_info.nit:66 */
   REGB0 = TAG_Int(6);
   fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
   if (!once_value_7) {
@@ -277,7 +277,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   } else fra.me.REG[4] = once_value_12;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./primitive_info.nit:68 */
+  /* ./primitive_info.nit:67 */
   REGB0 = TAG_Int(0);
   /* ./../lib/standard//collection//array.nit:23 */
   REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
@@ -292,7 +292,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ./../lib/standard//kernel.nit:332 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./primitive_info.nit:68 */
+      /* ./primitive_info.nit:67 */
       REGB2 = REGB0;
       /* ./../lib/standard//collection//array.nit:243 */
       fra.me.REG[4] = fra.me.REG[1];
@@ -331,10 +331,10 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
       /* ./../lib/standard//collection//array.nit:246 */
       goto label13;
       label13: while(0);
-      /* ./primitive_info.nit:69 */
+      /* ./primitive_info.nit:68 */
       REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 69);
+        nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 68);
       }
       fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
       /* ./../lib/standard//collection//array.nit:243 */
@@ -410,9 +410,9 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
       /* ./../lib/standard//collection//array.nit:246 */
       goto label15;
       label15: while(0);
-      /* ./primitive_info.nit:70 */
+      /* ./primitive_info.nit:69 */
       fra.me.REG[6] = NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
-      /* ./primitive_info.nit:71 */
+      /* ./primitive_info.nit:70 */
       CALL_abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[6]);
       /* ./../lib/standard//kernel.nit:334 */
       REGB2 = TAG_Int(1);
@@ -426,7 +426,7 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
     }
   }
   label16: while(0);
-  /* ./primitive_info.nit:73 */
+  /* ./primitive_info.nit:72 */
   goto label17;
   label17: while(0);
   stack_frame_head = fra.me.prev;
@@ -438,17 +438,17 @@ val_t primitive_info___PrimitiveInfo___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 79;
+  fra.me.line = 78;
   fra.me.meth = LOCATE_primitive_info___PrimitiveInfo___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:79 */
+  /* ./primitive_info.nit:78 */
   REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_primitive_info, 79);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_primitive_info, 78);
   }
   fra.me.REG[0] = ATTR_primitive_info___PrimitiveInfo____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -460,17 +460,17 @@ val_t primitive_info___PrimitiveInfo___tagged(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 82;
+  fra.me.line = 81;
   fra.me.meth = LOCATE_primitive_info___PrimitiveInfo___tagged;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:82 */
+  /* ./primitive_info.nit:81 */
   REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____tagged(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_tagged", LOCATE_primitive_info, 82);
+    nit_abort("Uninitialized attribute %s", "_tagged", LOCATE_primitive_info, 81);
   }
   REGB0 = ATTR_primitive_info___PrimitiveInfo____tagged(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -482,17 +482,17 @@ val_t primitive_info___PrimitiveInfo___cname(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 85;
+  fra.me.line = 84;
   fra.me.meth = LOCATE_primitive_info___PrimitiveInfo___cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:85 */
+  /* ./primitive_info.nit:84 */
   REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____cname(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_cname", LOCATE_primitive_info, 85);
+    nit_abort("Uninitialized attribute %s", "_cname", LOCATE_primitive_info, 84);
   }
   fra.me.REG[0] = ATTR_primitive_info___PrimitiveInfo____cname(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -506,7 +506,7 @@ void primitive_info___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2, val_t p
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 88;
+  fra.me.line = 87;
   fra.me.meth = LOCATE_primitive_info___PrimitiveInfo___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -517,11 +517,11 @@ void primitive_info___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2, val_t p
   fra.me.REG[1] = p1;
   REGB0 = p2;
   fra.me.REG[2] = p3;
-  /* ./primitive_info.nit:90 */
+  /* ./primitive_info.nit:89 */
   ATTR_primitive_info___PrimitiveInfo____name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./primitive_info.nit:91 */
+  /* ./primitive_info.nit:90 */
   ATTR_primitive_info___PrimitiveInfo____tagged(fra.me.REG[0]) = REGB0;
-  /* ./primitive_info.nit:92 */
+  /* ./primitive_info.nit:91 */
   ATTR_primitive_info___PrimitiveInfo____cname(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -535,17 +535,17 @@ val_t primitive_info___MMType___cname(val_t p0){
     static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 97;
+  fra.me.line = 96;
   fra.me.meth = LOCATE_primitive_info___MMType___cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:100 */
+  /* ./primitive_info.nit:99 */
   fra.me.REG[0] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./primitive_info.nit:101 */
+  /* ./primitive_info.nit:100 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -559,7 +559,7 @@ val_t primitive_info___MMType___cname(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./primitive_info.nit:102 */
+    /* ./primitive_info.nit:101 */
     if (!once_value_1) {
       fra.me.REG[1] = BOX_NativeString("val_t");
       REGB0 = TAG_Int(5);
@@ -570,10 +570,10 @@ val_t primitive_info___MMType___cname(val_t p0){
     fra.me.REG[1] = fra.me.REG[1];
     goto label2;
   } else {
-    /* ./primitive_info.nit:104 */
+    /* ./primitive_info.nit:103 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 104);
+      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 103);
     }
     fra.me.REG[0] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = fra.me.REG[0];
@@ -591,22 +591,22 @@ val_t primitive_info___MMType___is_tagged(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 108;
+  fra.me.line = 107;
   fra.me.meth = LOCATE_primitive_info___MMType___is_tagged;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:111 */
+  /* ./primitive_info.nit:110 */
   REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(false);
     goto label1;
   }
-  /* ./primitive_info.nit:112 */
+  /* ./primitive_info.nit:111 */
   fra.me.REG[0] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./primitive_info.nit:113 */
+  /* ./primitive_info.nit:112 */
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -623,7 +623,7 @@ val_t primitive_info___MMType___is_tagged(val_t p0){
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 113);
+      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 112);
     }
     REGB1 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[0])(fra.me.REG[0]);
   } else {
@@ -647,7 +647,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 116;
+  fra.me.line = 115;
   fra.me.meth = LOCATE_primitive_info___MMType___default_cvalue;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -656,10 +656,10 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./primitive_info.nit:120 */
+  /* ./primitive_info.nit:119 */
   fra.me.REG[1] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./primitive_info.nit:121 */
+  /* ./primitive_info.nit:120 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -676,7 +676,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 121);
+      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 120);
     }
     REGB0 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[1])(fra.me.REG[1]);
   } else {
@@ -684,7 +684,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./primitive_info.nit:122 */
+    /* ./primitive_info.nit:121 */
     REGB0 = TAG_Int(5);
     fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -711,7 +711,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 122);
+      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 121);
     }
     fra.me.REG[1] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[1])(fra.me.REG[1]);
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
@@ -727,7 +727,7 @@ val_t primitive_info___MMType___default_cvalue(val_t p0){
     fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     goto label4;
   } else {
-    /* ./primitive_info.nit:124 */
+    /* ./primitive_info.nit:123 */
     if (!once_value_5) {
       fra.me.REG[1] = BOX_NativeString("NIT_NULL");
       REGB0 = TAG_Int(8);
@@ -756,7 +756,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 128;
+  fra.me.line = 127;
   fra.me.meth = LOCATE_primitive_info___MMType___boxtype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -767,10 +767,10 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./primitive_info.nit:132 */
+  /* ./primitive_info.nit:131 */
   fra.me.REG[2] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./primitive_info.nit:133 */
+  /* ./primitive_info.nit:132 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -784,18 +784,18 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./primitive_info.nit:134 */
+    /* ./primitive_info.nit:133 */
     fra.me.REG[3] = fra.me.REG[1];
     goto label1;
   } else {
-    /* ./primitive_info.nit:135 */
+    /* ./primitive_info.nit:134 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 135);
+      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 134);
     }
     REGB0 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./primitive_info.nit:136 */
+      /* ./primitive_info.nit:135 */
       REGB0 = TAG_Int(5);
       fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
       if (!once_value_2) {
@@ -834,7 +834,7 @@ val_t primitive_info___MMType___boxtype(val_t p0, val_t p1){
       fra.me.REG[3] = fra.me.REG[2];
       goto label1;
     } else {
-      /* ./primitive_info.nit:138 */
+      /* ./primitive_info.nit:137 */
       REGB0 = TAG_Int(5);
       fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
       if (!once_value_5) {
@@ -891,7 +891,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_primitive_info;
-  fra.me.line = 142;
+  fra.me.line = 141;
   fra.me.meth = LOCATE_primitive_info___MMType___unboxtype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -902,10 +902,10 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./primitive_info.nit:146 */
+  /* ./primitive_info.nit:145 */
   fra.me.REG[2] = CALL_static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./primitive_info.nit:147 */
+  /* ./primitive_info.nit:146 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -919,18 +919,18 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./primitive_info.nit:148 */
+    /* ./primitive_info.nit:147 */
     fra.me.REG[3] = fra.me.REG[1];
     goto label1;
   } else {
-    /* ./primitive_info.nit:149 */
+    /* ./primitive_info.nit:148 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 149);
+      nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 148);
     }
     REGB0 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./primitive_info.nit:150 */
+      /* ./primitive_info.nit:149 */
       REGB0 = TAG_Int(5);
       fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
       if (!once_value_2) {
@@ -969,7 +969,7 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
       fra.me.REG[3] = fra.me.REG[2];
       goto label1;
     } else {
-      /* ./primitive_info.nit:152 */
+      /* ./primitive_info.nit:151 */
       REGB0 = TAG_Int(5);
       fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
       if (!once_value_5) {
index da7819b..c695890 100644 (file)
@@ -950,7 +950,7 @@ void rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
     /* ./analysis//rta_analysis.nit:168 */
-    REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       goto label20;
index bf216e7..6e03773 100644 (file)
@@ -103,8 +103,8 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
     CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
     if (!once_value_5) {
-      fra.me.REG[6] = BOX_NativeString(": Error package name \"");
-      REGB1 = TAG_Int(22);
+      fra.me.REG[6] = BOX_NativeString(": Error module name \"");
+      REGB1 = TAG_Int(21);
       fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB1);
       once_value_5 = fra.me.REG[6];
       register_static_object(&once_value_5);
index 9db8780..d7c20a8 100644 (file)
@@ -448,34 +448,36 @@ static const int lexer_goto_row86[] = {
        116, 122, 77
 };
 static const int lexer_goto_row87[] = {
-       3,
+       5,
        48, 99, -81,
        100, 100, 136,
-       101, 122, 77
+       101, 116, 77,
+       117, 117, 137,
+       118, 122, 77
 };
 static const int lexer_goto_row88[] = {
        4,
        48, 95, -29,
        97, 115, 77,
-       116, 116, 137,
+       116, 116, 138,
        117, 122, 77
 };
 static const int lexer_goto_row89[] = {
        3,
        48, 107, -31,
-       108, 108, 138,
+       108, 108, 139,
        109, 122, 77
 };
 static const int lexer_goto_row90[] = {
        3,
        48, 113, -30,
-       114, 114, 139,
+       114, 114, 140,
        115, 122, 77
 };
 static const int lexer_goto_row91[] = {
        3,
        48, 109, -40,
-       110, 110, 140,
+       110, 110, 141,
        111, 122, 77
 };
 static const int lexer_goto_row92[] = {
@@ -486,68 +488,68 @@ static const int lexer_goto_row93[] = {
        4,
        48, 95, -29,
        97, 111, 77,
-       112, 112, 141,
+       112, 112, 142,
        113, 122, 77
 };
 static const int lexer_goto_row94[] = {
        6,
        48, 95, -29,
        97, 104, 77,
-       105, 105, 142,
+       105, 105, 143,
        106, 115, 77,
-       116, 116, 143,
+       116, 116, 144,
        117, 122, 77
 };
 static const int lexer_goto_row95[] = {
        5,
        48, 95, -29,
-       97, 97, 144,
+       97, 97, 145,
        98, 114, 77,
-       115, 115, 145,
+       115, 115, 146,
        116, 122, 77
 };
 static const int lexer_goto_row96[] = {
        3,
        48, 97, -29,
-       98, 98, 146,
+       98, 98, 147,
        99, 122, 77
 };
 static const int lexer_goto_row97[] = {
        3,
        48, 110, -32,
-       111, 111, 147,
+       111, 111, 148,
        112, 122, 77
 };
 static const int lexer_goto_row98[] = {
        3,
        48, 99, -81,
-       100, 100, 148,
+       100, 100, 149,
        101, 122, 77
 };
 static const int lexer_goto_row99[] = {
        4,
        48, 95, -29,
        97, 118, 77,
-       119, 119, 149,
+       119, 119, 150,
        120, 122, 77
 };
 static const int lexer_goto_row100[] = {
        3,
        48, 115, -89,
-       116, 116, 150,
+       116, 116, 151,
        117, 122, 77
 };
 static const int lexer_goto_row101[] = {
        3,
        48, 107, -31,
-       108, 108, 151,
+       108, 108, 152,
        109, 122, 77
 };
 static const int lexer_goto_row102[] = {
        4,
        48, 95, -29,
        97, 98, 77,
-       99, 99, 152,
+       99, 99, 153,
        100, 122, 77
 };
 static const int lexer_goto_row103[] = {
@@ -557,86 +559,86 @@ static const int lexer_goto_row103[] = {
 static const int lexer_goto_row104[] = {
        3,
        48, 98, -103,
-       99, 99, 153,
+       99, 99, 154,
        100, 122, 77
 };
 static const int lexer_goto_row105[] = {
        5,
        48, 104, -95,
-       105, 105, 154,
+       105, 105, 155,
        106, 110, 77,
-       111, 111, 155,
+       111, 111, 156,
        112, 122, 77
 };
 static const int lexer_goto_row106[] = {
        7,
        48, 95, -29,
-       97, 97, 156,
+       97, 97, 157,
        98, 99, 77,
-       100, 100, 157,
+       100, 100, 158,
        101, 115, 77,
-       116, 116, 158,
+       116, 116, 159,
        117, 122, 77
 };
 static const int lexer_goto_row107[] = {
        3,
        48, 107, -31,
-       108, 108, 159,
+       108, 108, 160,
        109, 122, 77
 };
 static const int lexer_goto_row108[] = {
        3,
        48, 100, -39,
-       101, 101, 160,
+       101, 101, 161,
        102, 122, 77
 };
 static const int lexer_goto_row109[] = {
        3,
        48, 111, -94,
-       112, 112, 161,
+       112, 112, 162,
        113, 122, 77
 };
 static const int lexer_goto_row110[] = {
        3,
        48, 100, -39,
-       101, 101, 162,
+       101, 101, 163,
        102, 122, 77
 };
 static const int lexer_goto_row111[] = {
        4,
        48, 95, -29,
        97, 116, 77,
-       117, 117, 163,
+       117, 117, 164,
        118, 122, 77
 };
 static const int lexer_goto_row112[] = {
        3,
        48, 111, -94,
-       112, 112, 164,
+       112, 112, 165,
        113, 122, 77
 };
 static const int lexer_goto_row113[] = {
        3,
        48, 104, -95,
-       105, 105, 165,
+       105, 105, 166,
        106, 122, 77
 };
 static const int lexer_goto_row114[] = {
        3,
        48, 113, -30,
-       114, 114, 166,
+       114, 114, 167,
        115, 122, 77
 };
 static const int lexer_goto_row115[] = {
        3,
        48, 104, -95,
-       105, 105, 167,
+       105, 105, 168,
        106, 122, 77
 };
 static const int lexer_goto_row116[] = {
        3,
        48, 104, -95,
-       105, 105, 168,
+       105, 105, 169,
        106, 122, 77
 };
 static const int lexer_goto_row117[] = {
@@ -645,9 +647,9 @@ static const int lexer_goto_row117[] = {
 };
 static const int lexer_goto_row119[] = {
        3,
-       0, 9, 169,
-       11, 12, 169,
-       14, 255, 169
+       0, 9, 170,
+       11, 12, 170,
+       14, 255, 170
 };
 static const int lexer_goto_row121[] = {
        1,
@@ -672,13 +674,13 @@ static const int lexer_goto_row128[] = {
 static const int lexer_goto_row129[] = {
        3,
        48, 113, -30,
-       114, 114, 170,
+       114, 114, 171,
        115, 122, 77
 };
 static const int lexer_goto_row130[] = {
        3,
        48, 115, -89,
-       116, 116, 171,
+       116, 116, 172,
        117, 122, 77
 };
 static const int lexer_goto_row131[] = {
@@ -688,31 +690,31 @@ static const int lexer_goto_row131[] = {
 static const int lexer_goto_row132[] = {
        3,
        48, 100, -39,
-       101, 101, 172,
+       101, 101, 173,
        102, 122, 77
 };
 static const int lexer_goto_row133[] = {
        3,
        48, 95, -29,
-       97, 97, 173,
+       97, 97, 174,
        98, 122, 77
 };
 static const int lexer_goto_row134[] = {
        3,
        48, 114, -82,
-       115, 115, 174,
+       115, 115, 175,
        116, 122, 77
 };
 static const int lexer_goto_row135[] = {
        3,
        48, 115, -89,
-       116, 116, 175,
+       116, 116, 176,
        117, 122, 77
 };
 static const int lexer_goto_row136[] = {
        3,
        48, 100, -39,
-       101, 101, 176,
+       101, 101, 177,
        102, 122, 77
 };
 static const int lexer_goto_row137[] = {
@@ -720,729 +722,740 @@ static const int lexer_goto_row137[] = {
        48, 122, -35
 };
 static const int lexer_goto_row138[] = {
+       4,
+       48, 95, -29,
+       97, 108, 77,
+       109, 109, 178,
+       110, 122, 77
+};
+static const int lexer_goto_row139[] = {
        3,
        48, 100, -39,
-       101, 101, 177,
+       101, 101, 179,
        102, 122, 77
 };
-static const int lexer_goto_row139[] = {
+static const int lexer_goto_row140[] = {
        3,
        48, 114, -82,
-       115, 115, 178,
+       115, 115, 180,
        116, 122, 77
 };
-static const int lexer_goto_row140[] = {
+static const int lexer_goto_row141[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row141[] = {
+static const int lexer_goto_row142[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row142[] = {
+static const int lexer_goto_row143[] = {
        3,
        48, 110, -32,
-       111, 111, 179,
+       111, 111, 181,
        112, 122, 77
 };
-static const int lexer_goto_row143[] = {
+static const int lexer_goto_row144[] = {
        3,
        48, 115, -89,
-       116, 116, 180,
+       116, 116, 182,
        117, 122, 77
 };
-static const int lexer_goto_row144[] = {
+static const int lexer_goto_row145[] = {
        5,
        48, 100, -39,
-       101, 101, 181,
+       101, 101, 183,
        102, 113, 77,
-       114, 114, 182,
+       114, 114, 184,
        115, 122, 77
 };
-static const int lexer_goto_row145[] = {
+static const int lexer_goto_row146[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row146[] = {
+static const int lexer_goto_row147[] = {
        3,
        48, 100, -39,
-       101, 101, 183,
+       101, 101, 185,
        102, 122, 77
 };
-static const int lexer_goto_row147[] = {
+static const int lexer_goto_row148[] = {
        3,
        48, 100, -39,
-       101, 101, 184,
+       101, 101, 186,
        102, 122, 77
 };
-static const int lexer_goto_row148[] = {
+static const int lexer_goto_row149[] = {
        3,
        48, 111, -94,
-       112, 112, 185,
+       112, 112, 187,
        113, 122, 77
 };
-static const int lexer_goto_row149[] = {
+static const int lexer_goto_row150[] = {
        3,
        48, 116, -112,
-       117, 117, 186,
+       117, 117, 188,
        118, 122, 77
 };
-static const int lexer_goto_row150[] = {
+static const int lexer_goto_row151[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row151[] = {
+static const int lexer_goto_row152[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row152[] = {
+static const int lexer_goto_row153[] = {
        3,
        48, 107, -31,
-       108, 108, 187,
+       108, 108, 189,
        109, 122, 77
 };
-static const int lexer_goto_row153[] = {
+static const int lexer_goto_row154[] = {
        3,
        48, 100, -39,
-       101, 101, 188,
+       101, 101, 190,
        102, 122, 77
 };
-static const int lexer_goto_row154[] = {
+static const int lexer_goto_row155[] = {
        4,
        48, 95, -29,
        97, 106, 77,
-       107, 107, 189,
+       107, 107, 191,
        108, 122, 77
 };
-static const int lexer_goto_row155[] = {
+static const int lexer_goto_row156[] = {
        4,
        48, 95, -29,
        97, 117, 77,
-       118, 118, 190,
+       118, 118, 192,
        119, 122, 77
 };
-static const int lexer_goto_row156[] = {
+static const int lexer_goto_row157[] = {
        3,
        48, 115, -89,
-       116, 116, 191,
+       116, 116, 193,
        117, 122, 77
 };
-static const int lexer_goto_row157[] = {
+static const int lexer_goto_row158[] = {
        3,
        48, 99, -81,
-       100, 100, 192,
+       100, 100, 194,
        101, 122, 77
 };
-static const int lexer_goto_row158[] = {
+static const int lexer_goto_row159[] = {
        3,
        48, 100, -39,
-       101, 101, 193,
+       101, 101, 195,
        102, 122, 77
 };
-static const int lexer_goto_row159[] = {
+static const int lexer_goto_row160[] = {
        3,
        48, 116, -112,
-       117, 117, 194,
+       117, 117, 196,
        118, 122, 77
 };
-static const int lexer_goto_row160[] = {
+static const int lexer_goto_row161[] = {
        3,
        48, 101, -36,
-       102, 102, 195,
+       102, 102, 197,
        103, 122, 77
 };
-static const int lexer_goto_row161[] = {
+static const int lexer_goto_row162[] = {
        3,
        48, 98, -103,
-       99, 99, 196,
+       99, 99, 198,
        100, 122, 77
 };
-static const int lexer_goto_row162[] = {
+static const int lexer_goto_row163[] = {
        3,
        48, 100, -39,
-       101, 101, 197,
+       101, 101, 199,
        102, 122, 77
 };
-static const int lexer_goto_row163[] = {
+static const int lexer_goto_row164[] = {
        3,
        48, 109, -40,
-       110, 110, 198,
+       110, 110, 200,
        111, 122, 77
 };
-static const int lexer_goto_row164[] = {
+static const int lexer_goto_row165[] = {
        3,
        48, 100, -39,
-       101, 101, 199,
+       101, 101, 201,
        102, 122, 77
 };
-static const int lexer_goto_row165[] = {
+static const int lexer_goto_row166[] = {
        3,
        48, 100, -39,
-       101, 101, 200,
+       101, 101, 202,
        102, 122, 77
 };
-static const int lexer_goto_row166[] = {
+static const int lexer_goto_row167[] = {
        3,
-       48, 117, -156,
-       118, 118, 201,
+       48, 117, -157,
+       118, 118, 203,
        119, 122, 77
 };
-static const int lexer_goto_row167[] = {
+static const int lexer_goto_row168[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row168[] = {
+static const int lexer_goto_row169[] = {
        3,
        48, 107, -31,
-       108, 108, 202,
+       108, 108, 204,
        109, 122, 77
 };
-static const int lexer_goto_row169[] = {
+static const int lexer_goto_row170[] = {
        3,
        48, 115, -89,
-       116, 116, 203,
+       116, 116, 205,
        117, 122, 77
 };
-static const int lexer_goto_row170[] = {
+static const int lexer_goto_row171[] = {
        1,
        0, 255, -48
 };
-static const int lexer_goto_row171[] = {
+static const int lexer_goto_row172[] = {
        3,
        48, 115, -89,
-       116, 116, 204,
+       116, 116, 206,
        117, 122, 77
 };
-static const int lexer_goto_row172[] = {
+static const int lexer_goto_row173[] = {
        3,
        48, 113, -30,
-       114, 114, 205,
+       114, 114, 207,
        115, 122, 77
 };
-static const int lexer_goto_row173[] = {
+static const int lexer_goto_row174[] = {
        3,
        48, 113, -30,
-       114, 114, 206,
+       114, 114, 208,
        115, 122, 77
 };
-static const int lexer_goto_row174[] = {
+static const int lexer_goto_row175[] = {
        3,
-       48, 106, -155,
-       107, 107, 207,
+       48, 106, -156,
+       107, 107, 209,
        108, 122, 77
 };
-static const int lexer_goto_row175[] = {
+static const int lexer_goto_row176[] = {
        3,
        48, 114, -82,
-       115, 115, 208,
+       115, 115, 210,
        116, 122, 77
 };
-static const int lexer_goto_row176[] = {
+static const int lexer_goto_row177[] = {
        3,
        48, 104, -95,
-       105, 105, 209,
+       105, 105, 211,
        106, 122, 77
 };
-static const int lexer_goto_row177[] = {
+static const int lexer_goto_row178[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row178[] = {
+static const int lexer_goto_row179[] = {
+       1,
+       48, 122, -35
+};
+static const int lexer_goto_row180[] = {
        3,
        48, 113, -30,
-       114, 114, 210,
+       114, 114, 212,
        115, 122, 77
 };
-static const int lexer_goto_row179[] = {
+static const int lexer_goto_row181[] = {
        3,
        48, 100, -39,
-       101, 101, 211,
+       101, 101, 213,
        102, 122, 77
 };
-static const int lexer_goto_row180[] = {
+static const int lexer_goto_row182[] = {
        3,
        48, 113, -30,
-       114, 114, 212,
+       114, 114, 214,
        115, 122, 77
 };
-static const int lexer_goto_row181[] = {
+static const int lexer_goto_row183[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row182[] = {
+static const int lexer_goto_row184[] = {
        3,
        48, 113, -30,
-       114, 114, 213,
+       114, 114, 215,
        115, 122, 77
 };
-static const int lexer_goto_row183[] = {
+static const int lexer_goto_row185[] = {
        3,
        48, 116, -112,
-       117, 117, 214,
+       117, 117, 216,
        118, 122, 77
 };
-static const int lexer_goto_row184[] = {
+static const int lexer_goto_row186[] = {
        3,
        48, 115, -89,
-       116, 116, 215,
+       116, 116, 217,
        117, 122, 77
 };
-static const int lexer_goto_row185[] = {
+static const int lexer_goto_row187[] = {
        3,
        48, 107, -31,
-       108, 108, 216,
+       108, 108, 218,
        109, 122, 77
 };
-static const int lexer_goto_row186[] = {
+static const int lexer_goto_row188[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row187[] = {
+static const int lexer_goto_row189[] = {
        3,
        48, 107, -31,
-       108, 108, 217,
+       108, 108, 219,
        109, 122, 77
 };
-static const int lexer_goto_row188[] = {
+static const int lexer_goto_row190[] = {
        3,
        48, 95, -29,
-       97, 97, 218,
+       97, 97, 220,
        98, 122, 77
 };
-static const int lexer_goto_row189[] = {
+static const int lexer_goto_row191[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row190[] = {
+static const int lexer_goto_row192[] = {
        3,
        48, 95, -29,
-       97, 97, 219,
+       97, 97, 221,
        98, 122, 77
 };
-static const int lexer_goto_row191[] = {
+static const int lexer_goto_row193[] = {
        3,
        48, 95, -29,
-       97, 97, 220,
+       97, 97, 222,
        98, 122, 77
 };
-static const int lexer_goto_row192[] = {
+static const int lexer_goto_row194[] = {
        3,
        48, 100, -39,
-       101, 101, 221,
+       101, 101, 223,
        102, 122, 77
 };
-static const int lexer_goto_row193[] = {
+static const int lexer_goto_row195[] = {
        3,
        48, 95, -29,
-       97, 97, 222,
+       97, 97, 224,
        98, 122, 77
 };
-static const int lexer_goto_row194[] = {
+static const int lexer_goto_row196[] = {
        3,
        48, 101, -36,
-       102, 102, 223,
+       102, 102, 225,
        103, 122, 77
 };
-static const int lexer_goto_row195[] = {
+static const int lexer_goto_row197[] = {
        3,
        48, 113, -30,
-       114, 114, 224,
+       114, 114, 226,
        115, 122, 77
 };
-static const int lexer_goto_row196[] = {
+static const int lexer_goto_row198[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row197[] = {
+static const int lexer_goto_row199[] = {
        3,
        48, 104, -95,
-       105, 105, 225,
+       105, 105, 227,
        106, 122, 77
 };
-static const int lexer_goto_row198[] = {
+static const int lexer_goto_row200[] = {
        3,
        48, 113, -30,
-       114, 114, 226,
+       114, 114, 228,
        115, 122, 77
 };
-static const int lexer_goto_row199[] = {
+static const int lexer_goto_row201[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row200[] = {
+static const int lexer_goto_row202[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row201[] = {
+static const int lexer_goto_row203[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row202[] = {
+static const int lexer_goto_row204[] = {
        3,
        48, 100, -39,
-       101, 101, 227,
+       101, 101, 229,
        102, 122, 77
 };
-static const int lexer_goto_row203[] = {
+static const int lexer_goto_row205[] = {
        3,
        48, 100, -39,
-       101, 101, 228,
+       101, 101, 230,
        102, 122, 77
 };
-static const int lexer_goto_row204[] = {
+static const int lexer_goto_row206[] = {
        3,
        48, 95, -29,
-       97, 97, 229,
+       97, 97, 231,
        98, 122, 77
 };
-static const int lexer_goto_row205[] = {
+static const int lexer_goto_row207[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row206[] = {
+static const int lexer_goto_row208[] = {
        3,
        48, 95, -29,
-       97, 97, 230,
+       97, 97, 232,
        98, 122, 77
 };
-static const int lexer_goto_row207[] = {
+static const int lexer_goto_row209[] = {
        3,
        48, 115, -89,
-       116, 116, 231,
+       116, 116, 233,
        117, 122, 77
 };
-static const int lexer_goto_row208[] = {
+static const int lexer_goto_row210[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row209[] = {
+static const int lexer_goto_row211[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row210[] = {
+static const int lexer_goto_row212[] = {
        3,
        48, 109, -40,
-       110, 110, 232,
+       110, 110, 234,
        111, 122, 77
 };
-static const int lexer_goto_row211[] = {
+static const int lexer_goto_row213[] = {
        3,
        48, 109, -40,
-       110, 110, 233,
+       110, 110, 235,
        111, 122, 77
 };
-static const int lexer_goto_row212[] = {
+static const int lexer_goto_row214[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row213[] = {
+static const int lexer_goto_row215[] = {
        3,
        48, 115, -89,
-       116, 116, 234,
+       116, 116, 236,
        117, 122, 77
 };
-static const int lexer_goto_row214[] = {
+static const int lexer_goto_row216[] = {
        5,
        48, 101, -36,
-       102, 102, 235,
+       102, 102, 237,
        103, 109, 77,
-       110, 110, 236,
+       110, 110, 238,
        111, 122, 77
 };
-static const int lexer_goto_row215[] = {
+static const int lexer_goto_row217[] = {
        3,
        48, 99, -81,
-       100, 100, 237,
+       100, 100, 239,
        101, 122, 77
 };
-static const int lexer_goto_row216[] = {
+static const int lexer_goto_row218[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row217[] = {
+static const int lexer_goto_row219[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row218[] = {
+static const int lexer_goto_row220[] = {
        3,
        48, 100, -39,
-       101, 101, 238,
+       101, 101, 240,
        102, 122, 77
 };
-static const int lexer_goto_row219[] = {
+static const int lexer_goto_row221[] = {
        3,
        48, 97, -29,
-       98, 98, 239,
+       98, 98, 241,
        99, 122, 77
 };
-static const int lexer_goto_row220[] = {
+static const int lexer_goto_row222[] = {
        4,
        48, 95, -29,
        97, 102, 77,
-       103, 103, 240,
+       103, 103, 242,
        104, 122, 77
 };
-static const int lexer_goto_row221[] = {
+static const int lexer_goto_row223[] = {
        3,
        48, 115, -89,
-       116, 116, 241,
+       116, 116, 243,
        117, 122, 77
 };
-static const int lexer_goto_row222[] = {
+static const int lexer_goto_row224[] = {
        3,
        48, 98, -103,
-       99, 99, 242,
+       99, 99, 244,
        100, 122, 77
 };
-static const int lexer_goto_row223[] = {
+static const int lexer_goto_row225[] = {
        3,
        48, 97, -29,
-       98, 98, 243,
+       98, 98, 245,
        99, 122, 77
 };
-static const int lexer_goto_row224[] = {
+static const int lexer_goto_row226[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row225[] = {
+static const int lexer_goto_row227[] = {
        3,
        48, 109, -40,
-       110, 110, 244,
+       110, 110, 246,
        111, 122, 77
 };
-static const int lexer_goto_row226[] = {
+static const int lexer_goto_row228[] = {
        3,
        48, 95, -29,
-       97, 97, 245,
+       97, 97, 247,
        98, 122, 77
 };
-static const int lexer_goto_row227[] = {
+static const int lexer_goto_row229[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row228[] = {
+static const int lexer_goto_row230[] = {
        3,
        48, 113, -30,
-       114, 114, 246,
+       114, 114, 248,
        115, 122, 77
 };
-static const int lexer_goto_row229[] = {
+static const int lexer_goto_row231[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row230[] = {
+static const int lexer_goto_row232[] = {
        3,
        48, 97, -29,
-       98, 98, 247,
+       98, 98, 249,
        99, 122, 77
 };
-static const int lexer_goto_row231[] = {
+static const int lexer_goto_row233[] = {
        3,
        48, 98, -103,
-       99, 99, 248,
+       99, 99, 250,
        100, 122, 77
 };
-static const int lexer_goto_row232[] = {
+static const int lexer_goto_row234[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row233[] = {
+static const int lexer_goto_row235[] = {
        3,
        48, 116, -112,
-       117, 117, 249,
+       117, 117, 251,
        118, 122, 77
 };
-static const int lexer_goto_row234[] = {
+static const int lexer_goto_row236[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row235[] = {
+static const int lexer_goto_row237[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row236[] = {
+static const int lexer_goto_row238[] = {
        3,
        48, 95, -29,
-       97, 97, 250,
+       97, 97, 252,
        98, 122, 77
 };
-static const int lexer_goto_row237[] = {
+static const int lexer_goto_row239[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row238[] = {
+static const int lexer_goto_row240[] = {
        3,
        48, 100, -39,
-       101, 101, 251,
+       101, 101, 253,
        102, 122, 77
 };
-static const int lexer_goto_row239[] = {
+static const int lexer_goto_row241[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row240[] = {
+static const int lexer_goto_row242[] = {
        3,
        48, 107, -31,
-       108, 108, 252,
+       108, 108, 254,
        109, 122, 77
 };
-static const int lexer_goto_row241[] = {
+static const int lexer_goto_row243[] = {
        3,
        48, 100, -39,
-       101, 101, 253,
+       101, 101, 255,
        102, 122, 77
 };
-static const int lexer_goto_row242[] = {
+static const int lexer_goto_row244[] = {
        3,
        48, 100, -39,
-       101, 101, 254,
+       101, 101, 256,
        102, 122, 77
 };
-static const int lexer_goto_row243[] = {
+static const int lexer_goto_row245[] = {
        3,
        48, 115, -89,
-       116, 116, 255,
+       116, 116, 257,
        117, 122, 77
 };
-static const int lexer_goto_row244[] = {
+static const int lexer_goto_row246[] = {
        3,
        48, 107, -31,
-       108, 108, 256,
+       108, 108, 258,
        109, 122, 77
 };
-static const int lexer_goto_row245[] = {
+static const int lexer_goto_row247[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row246[] = {
+static const int lexer_goto_row248[] = {
        3,
        48, 107, -31,
-       108, 108, 257,
+       108, 108, 259,
        109, 122, 77
 };
-static const int lexer_goto_row247[] = {
+static const int lexer_goto_row249[] = {
        3,
        48, 114, -82,
-       115, 115, 258,
+       115, 115, 260,
        116, 122, 77
 };
-static const int lexer_goto_row248[] = {
+static const int lexer_goto_row250[] = {
        3,
        48, 107, -31,
-       108, 108, 259,
+       108, 108, 261,
        109, 122, 77
 };
-static const int lexer_goto_row249[] = {
+static const int lexer_goto_row251[] = {
        3,
        48, 115, -89,
-       116, 116, 260,
+       116, 116, 262,
        117, 122, 77
 };
-static const int lexer_goto_row250[] = {
+static const int lexer_goto_row252[] = {
        3,
        48, 100, -39,
-       101, 101, 261,
+       101, 101, 263,
        102, 122, 77
 };
-static const int lexer_goto_row251[] = {
+static const int lexer_goto_row253[] = {
        3,
        48, 98, -103,
-       99, 99, 262,
+       99, 99, 264,
        100, 122, 77
 };
-static const int lexer_goto_row252[] = {
+static const int lexer_goto_row254[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row253[] = {
+static const int lexer_goto_row255[] = {
        3,
        48, 100, -39,
-       101, 101, 263,
+       101, 101, 265,
        102, 122, 77
 };
-static const int lexer_goto_row254[] = {
+static const int lexer_goto_row256[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row255[] = {
+static const int lexer_goto_row257[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row256[] = {
+static const int lexer_goto_row258[] = {
        3,
        48, 100, -39,
-       101, 101, 264,
+       101, 101, 266,
        102, 122, 77
 };
-static const int lexer_goto_row257[] = {
+static const int lexer_goto_row259[] = {
        3,
        48, 100, -39,
-       101, 101, 265,
+       101, 101, 267,
        102, 122, 77
 };
-static const int lexer_goto_row258[] = {
+static const int lexer_goto_row260[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row259[] = {
+static const int lexer_goto_row261[] = {
        3,
        48, 95, -29,
-       97, 97, 266,
+       97, 97, 268,
        98, 122, 77
 };
-static const int lexer_goto_row260[] = {
+static const int lexer_goto_row262[] = {
        3,
        48, 100, -39,
-       101, 101, 267,
+       101, 101, 269,
        102, 122, 77
 };
-static const int lexer_goto_row261[] = {
+static const int lexer_goto_row263[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row262[] = {
+static const int lexer_goto_row264[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row263[] = {
+static const int lexer_goto_row265[] = {
        3,
        48, 100, -39,
-       101, 101, 268,
+       101, 101, 270,
        102, 122, 77
 };
-static const int lexer_goto_row264[] = {
+static const int lexer_goto_row266[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row265[] = {
+static const int lexer_goto_row267[] = {
        3,
        48, 99, -81,
-       100, 100, 269,
+       100, 100, 271,
        101, 122, 77
 };
-static const int lexer_goto_row266[] = {
+static const int lexer_goto_row268[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row267[] = {
+static const int lexer_goto_row269[] = {
        3,
        48, 107, -31,
-       108, 108, 270,
+       108, 108, 272,
        109, 122, 77
 };
-static const int lexer_goto_row268[] = {
+static const int lexer_goto_row270[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row269[] = {
+static const int lexer_goto_row271[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row270[] = {
+static const int lexer_goto_row272[] = {
        1,
        48, 122, -35
 };
-static const int lexer_goto_row271[] = {
+static const int lexer_goto_row273[] = {
        1,
        48, 122, -35
 };
@@ -1718,11 +1731,13 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row268,
        lexer_goto_row269,
        lexer_goto_row270,
-       lexer_goto_row271
+       lexer_goto_row271,
+       lexer_goto_row272,
+       lexer_goto_row273
 };
 
 const int lexer_accept_table[] = {
-       -1,0,1,1,0,79,-1,-1,69,-1,52,53,67,65,56,66,64,68,83,57,72,59,75,80,54,55,-1,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,-1,1,71,-1,86,-1,87,-1,2,2,-1,85,60,61,63,84,-1,58,74,73,70,76,77,80,80,80,80,82,81,81,81,81,81,81,48,81,81,81,16,81,81,81,81,81,81,25,81,31,15,81,81,81,81,81,81,81,33,81,81,81,81,81,81,81,81,81,81,81,81,81,-1,89,-1,88,-1,2,62,78,82,82,82,82,81,81,32,81,81,81,81,81,10,81,81,30,11,81,81,81,41,81,81,81,81,40,34,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,19,81,81,-1,81,81,81,81,81,81,27,81,81,81,13,81,81,81,81,29,81,47,42,81,81,81,81,81,81,44,81,81,26,45,12,81,81,81,38,81,81,37,5,81,81,46,81,81,81,50,51,81,81,81,81,81,81,14,81,81,43,81,28,81,81,39,81,21,4,81,20,81,3,81,81,81,81,81,35,81,81,81,81,81,81,24,81,3,23,81,81,9,81,81,6,36,81,49,81,17,81,18,7,22,8
+       -1,0,1,1,0,79,-1,-1,69,-1,52,53,67,65,56,66,64,68,83,57,72,59,75,80,54,55,-1,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,-1,1,71,-1,86,-1,87,-1,2,2,-1,85,60,61,63,84,-1,58,74,73,70,76,77,80,80,80,80,82,81,81,81,81,81,81,48,81,81,81,16,81,81,81,81,81,81,25,81,31,15,81,81,81,81,81,81,81,33,81,81,81,81,81,81,81,81,81,81,81,81,81,-1,89,-1,88,-1,2,62,78,82,82,82,82,81,81,32,81,81,81,81,81,10,81,81,81,30,11,81,81,81,41,81,81,81,81,40,34,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,19,81,81,-1,81,81,81,81,81,81,27,8,81,81,81,13,81,81,81,81,29,81,47,42,81,81,81,81,81,81,44,81,81,26,45,12,81,81,81,38,81,81,37,5,81,81,46,81,81,81,50,51,81,81,81,81,81,81,14,81,81,43,81,28,81,81,39,81,21,4,81,20,81,3,81,81,81,81,81,35,81,81,81,81,81,81,24,81,3,23,81,81,9,81,81,6,36,81,49,81,17,81,18,7,22,8
 };
 
 static int parser_action_row1[] = {
index dcdd8d1..37088e4 100644 (file)
@@ -1656,7 +1656,7 @@ void typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
           REGB3 = TAG_Bool(true);
         } else {
           fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-          REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_universal(fra.me.REG[4])(fra.me.REG[4]);
+          REGB4 = CALL_abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {